perm filename BENCH.IL[TIM,LSP]1 blob
sn#724668 filedate 1983-08-30 generic text, type T, neo UTF8
Instructions are after the STOP associated with each file. You will
need the CMLARRAY package from JONL@PARC (Common Lisp Array Package).
(FILECREATED " 5-JUL-83 21:34:28" {PHYLUM}<GABRIEL>BOYER.;1 14661
changes to: (VARS BOYERCOMS))
(PRETTYCOMPRINT BOYERCOMS)
(RPAQQ BOYERCOMS ((FNS ADD-LEMMA ADD-LEMMA-LST APPLY-SUBST APPLY-SUBST-LST FALSEP ONE-WAY-UNIFY
ONE-WAY-UNIFY1 ONE-WAY-UNIFY1-LST PTIME REWRITE REWRITE-ARGS
REWRITE-WITH-LEMMAS SETUP TAUTOLOGYP TAUTP TEST TRANS-OF-IMPLIES
TRANS-OF-IMPLIES1 TRUEP)
(GLOBALVARS TEMP-TEMP UNIFY-SUBST)))
(DEFINEQ
(ADD-LEMMA
(LAMBDA (TERM)
(COND
((AND (NOT (ATOM TERM))
(EQ (CAR TERM)
(QUOTE EQUAL))
(NOT (ATOM (CADR TERM))))
(COND
((GETPROP (CAR (CADR TERM))
(QUOTE LEMMAS))
(PUTPROP (CAR (CADR TERM))
(QUOTE LEMMAS)
(CONS TERM (GETPROP (CAR (CADR TERM))
(QUOTE LEMMAS)))))
(T (SETPROPLIST (CAR (CADR TERM))
(CONS (QUOTE LEMMAS)
(CONS (LIST TERM)
(GETPROPLIST (CAR (CADR TERM)))))))))
(T (ERROR (QUOTE ADD-LEMMA-DID-NOT-LIKE-TERM)
TERM)))))
(ADD-LEMMA-LST
(LAMBDA (LST)
(COND
((NULL LST)
T)
(T (ADD-LEMMA (CAR LST))
(ADD-LEMMA-LST (CDR LST))))))
(APPLY-SUBST
(LAMBDA (ALIST TERM)
(COND
((NLISTP TERM)
(COND
((SETQ TEMP-TEMP (FASSOC TERM ALIST))
(CDR TEMP-TEMP))
(T TERM)))
(T (CONS (CAR TERM)
(APPLY-SUBST-LST ALIST (CDR TERM)))))))
(APPLY-SUBST-LST
(LAMBDA (ALIST LST)
(COND
((NULL LST)
NIL)
(T (CONS (APPLY-SUBST ALIST (CAR LST))
(APPLY-SUBST-LST ALIST (CDR LST)))))))
(FALSEP
(LAMBDA (X LST)
(OR (EQUAL X (QUOTE (F)))
(MEMBER X LST))))
(ONE-WAY-UNIFY
(LAMBDA (TERM1 TERM2)
(PROGN (SETQ UNIFY-SUBST NIL)
(ONE-WAY-UNIFY1 TERM1 TERM2))))
(ONE-WAY-UNIFY1
(LAMBDA (TERM1 TERM2)
(COND
((NLISTP TERM2)
(COND
((SETQ TEMP-TEMP (FASSOC TERM2 UNIFY-SUBST))
(EQUAL TERM1 (CDR TEMP-TEMP)))
(T (SETQ UNIFY-SUBST (CONS (CONS TERM2 TERM1)
UNIFY-SUBST))
T)))
((ATOM TERM1)
NIL)
((EQ (CAR TERM1)
(CAR TERM2))
(ONE-WAY-UNIFY1-LST (CDR TERM1)
(CDR TERM2)))
(T NIL))))
(ONE-WAY-UNIFY1-LST
(LAMBDA (LST1 LST2)
(COND
((NULL LST1)
T)
((ONE-WAY-UNIFY1 (CAR LST1)
(CAR LST2))
(ONE-WAY-UNIFY1-LST (CDR LST1)
(CDR LST2)))
(T NIL))))
(PTIME
(LAMBDA NIL
(PROG (GCTM)
(SETQ GCTM (CLOCK 3))
(RETURN (CONS (IPLUS (CLOCK 2)
GCTM)
GCTM)))))
(REWRITE
(LAMBDA (TERM)
(COND
((NLISTP TERM)
TERM)
(T (REWRITE-WITH-LEMMAS (CONS (CAR TERM)
(REWRITE-ARGS (CDR TERM)))
(GETPROP (CAR TERM)
(QUOTE LEMMAS)))))))
(REWRITE-ARGS
(LAMBDA (LST)
(COND
((NULL LST)
NIL)
(T (CONS (REWRITE (CAR LST))
(REWRITE-ARGS (CDR LST)))))))
(REWRITE-WITH-LEMMAS
(LAMBDA (TERM LST)
(COND
((NULL LST)
TERM)
((ONE-WAY-UNIFY TERM (CADR (CAR LST)))
(REWRITE (APPLY-SUBST UNIFY-SUBST (CADDR (CAR LST)))))
(T (REWRITE-WITH-LEMMAS TERM (CDR LST))))))
(SETUP
(LAMBDA NIL
(ADD-LEMMA-LST (QUOTE ((EQUAL (COMPILE FORM)
(REVERSE (CODEGEN (OPTIMIZE FORM)
(NIL))))
(EQUAL (EQP X Y)
(EQUAL (FIX X)
(FIX Y)))
(EQUAL (GREATERP X Y)
(LESSP Y X))
(EQUAL (LESSEQP X Y)
(NOT (LESSP Y X)))
(EQUAL (GREATEREQP X Y)
(NOT (LESSP X Y)))
(EQUAL (BOOLEAN X)
(OR (EQUAL X (T))
(EQUAL X (F))))
(EQUAL (IFF X Y)
(AND (IMPLIES X Y)
(IMPLIES Y X)))
(EQUAL (EVEN1 X)
(IF (ZEROP X)
(T)
(ODD (SUB1 X))))
(EQUAL (COUNTPS- L PRED)
(COUNTPS-LOOP L PRED (ZERO)))
(EQUAL (FACT- I)
(FACT-LOOP I 1))
(EQUAL (REVERSE- X)
(REVERSE-LOOP X (NIL)))
(EQUAL (DIVIDES X Y)
(ZEROP (REMAINDER Y X)))
(EQUAL (ASSUME-TRUE VAR ALIST)
(CONS (CONS VAR (T))
ALIST))
(EQUAL (ASSUME-FALSE VAR ALIST)
(CONS (CONS VAR (F))
ALIST))
(EQUAL (TAUTOLOGY-CHECKER X)
(TAUTOLOGYP (NORMALIZE X)
(NIL)))
(EQUAL (FALSIFY X)
(FALSIFY1 (NORMALIZE X)
(NIL)))
(EQUAL (PRIME X)
(AND (NOT (ZEROP X))
(NOT (EQUAL X (ADD1 (ZERO))))
(PRIME1 X (SUB1 X))))
(EQUAL (AND P Q)
(IF P (IF Q (T)
(F))
(F)))
(EQUAL (OR P Q)
(IF P (T)
(IF Q (T)
(F))
(F)))
(EQUAL (NOT P)
(IF P (F)
(T)))
(EQUAL (IMPLIES P Q)
(IF P (IF Q (T)
(F))
(T)))
(EQUAL (FIX X)
(IF (NUMBERP X)
X
(ZERO)))
(EQUAL (IF (IF A B C)
D E)
(IF A (IF B D E)
(IF C D E)))
(EQUAL (ZEROP X)
(OR (EQUAL X (ZERO))
(NOT (NUMBERP X))))
(EQUAL (PLUS (PLUS X Y)
Z)
(PLUS X (PLUS Y Z)))
(EQUAL (EQUAL (PLUS A B)
(ZERO))
(AND (ZEROP A)
(ZEROP B)))
(EQUAL (DIFFERENCE X X)
(ZERO))
(EQUAL (EQUAL (PLUS A B)
(PLUS A C))
(EQUAL (FIX B)
(FIX C)))
(EQUAL (EQUAL (ZERO)
(DIFFERENCE X Y))
(NOT (LESSP Y X)))
(EQUAL (EQUAL X (DIFFERENCE X Y))
(AND (NUMBERP X)
(OR (EQUAL X (ZERO))
(ZEROP Y))))
(EQUAL (MEANING (PLUS-TREE (APPEND X Y))
A)
(PLUS (MEANING (PLUS-TREE X)
A)
(MEANING (PLUS-TREE Y)
A)))
(EQUAL (MEANING (PLUS-TREE (PLUS-FRINGE X))
A)
(FIX (MEANING X A)))
(EQUAL (APPEND (APPEND X Y)
Z)
(APPEND X (APPEND Y Z)))
(EQUAL (REVERSE (APPEND A B))
(APPEND (REVERSE B)
(REVERSE A)))
(EQUAL (TIMES X (PLUS Y Z))
(PLUS (TIMES X Y)
(TIMES X Z)))
(EQUAL (TIMES (TIMES X Y)
Z)
(TIMES X (TIMES Y Z)))
(EQUAL (EQUAL (TIMES X Y)
(ZERO))
(OR (ZEROP X)
(ZEROP Y)))
(EQUAL (EXEC (APPEND X Y)
PDS ENVRN)
(EXEC Y (EXEC X PDS ENVRN)
ENVRN))
(EQUAL (MC-FLATTEN X Y)
(APPEND (FLATTEN X)
Y))
(EQUAL (MEMBER X (APPEND A B))
(OR (MEMBER X A)
(MEMBER X B)))
(EQUAL (MEMBER X (REVERSE Y))
(MEMBER X Y))
(EQUAL (LENGTH (REVERSE X))
(LENGTH X))
(EQUAL (MEMBER A (INTERSECT B C))
(AND (MEMBER A B)
(MEMBER A C)))
(EQUAL (NTH (ZERO)
I)
(ZERO))
(EQUAL (EXP I (PLUS J K))
(TIMES (EXP I J)
(EXP I K)))
(EQUAL (EXP I (TIMES J K))
(EXP (EXP I J)
K))
(EQUAL (REVERSE-LOOP X Y)
(APPEND (REVERSE X)
Y))
(EQUAL (REVERSE-LOOP X (NIL))
(REVERSE X))
(EQUAL (COUNT-LIST Z (SORT-LP X Y))
(PLUS (COUNT-LIST Z X)
(COUNT-LIST Z Y)))
(EQUAL (EQUAL (APPEND A B)
(APPEND A C))
(EQUAL B C))
(EQUAL (PLUS (REMAINDER X Y)
(TIMES Y (QUOTIENT X Y)))
(FIX X))
(EQUAL (POWER-EVAL (BIG-PLUS1 L I BASE)
BASE)
(PLUS (POWER-EVAL L BASE)
I))
(EQUAL (POWER-EVAL (BIG-PLUS X Y I BASE)
BASE)
(PLUS I (PLUS (POWER-EVAL X BASE)
(POWER-EVAL Y BASE))))
(EQUAL (REMAINDER Y 1)
(ZERO))
(EQUAL (LESSP (REMAINDER X Y)
Y)
(NOT (ZEROP Y)))
(EQUAL (REMAINDER X X)
(ZERO))
(EQUAL (LESSP (QUOTIENT I J)
I)
(AND (NOT (ZEROP I))
(OR (ZEROP J)
(NOT (EQUAL J 1)))))
(EQUAL (LESSP (REMAINDER X Y)
X)
(AND (NOT (ZEROP Y))
(NOT (ZEROP X))
(NOT (LESSP X Y))))
(EQUAL (POWER-EVAL (POWER-REP I BASE)
BASE)
(FIX I))
(EQUAL (POWER-EVAL (BIG-PLUS (POWER-REP I BASE)
(POWER-REP J BASE)
(ZERO)
BASE)
BASE)
(PLUS I J))
(EQUAL (GCD X Y)
(GCD Y X))
(EQUAL (NTH (APPEND A B)
I)
(APPEND (NTH A I)
(NTH B (DIFFERENCE I (LENGTH A)))))
(EQUAL (DIFFERENCE (PLUS X Y)
X)
(FIX Y))
(EQUAL (DIFFERENCE (PLUS Y X)
X)
(FIX Y))
(EQUAL (DIFFERENCE (PLUS X Y)
(PLUS X Z))
(DIFFERENCE Y Z))
(EQUAL (TIMES X (DIFFERENCE C W))
(DIFFERENCE (TIMES C X)
(TIMES W X)))
(EQUAL (REMAINDER (TIMES X Z)
Z)
(ZERO))
(EQUAL (DIFFERENCE (PLUS B (PLUS A C))
A)
(PLUS B C))
(EQUAL (DIFFERENCE (ADD1 (PLUS Y Z))
Z)
(ADD1 Y))
(EQUAL (LESSP (PLUS X Y)
(PLUS X Z))
(LESSP Y Z))
(EQUAL (LESSP (TIMES X Z)
(TIMES Y Z))
(AND (NOT (ZEROP Z))
(LESSP X Y)))
(EQUAL (LESSP Y (PLUS X Y))
(NOT (ZEROP X)))
(EQUAL (GCD (TIMES X Z)
(TIMES Y Z))
(TIMES Z (GCD X Y)))
(EQUAL (VALUE (NORMALIZE X)
A)
(VALUE X A))
(EQUAL (EQUAL (FLATTEN X)
(CONS Y (NIL)))
(AND (NLISTP X)
(EQUAL X Y)))
(EQUAL (LISTP (GOPHER X))
(LISTP X))
(EQUAL (SAMEFRINGE X Y)
(EQUAL (FLATTEN X)
(FLATTEN Y)))
(EQUAL (EQUAL (GREATEST-FACTOR X Y)
(ZERO))
(AND (OR (ZEROP Y)
(EQUAL Y 1))
(EQUAL X (ZERO))))
(EQUAL (EQUAL (GREATEST-FACTOR X Y)
1)
(EQUAL X 1))
(EQUAL (NUMBERP (GREATEST-FACTOR X Y))
(NOT (AND (OR (ZEROP Y)
(EQUAL Y 1))
(NOT (NUMBERP X)))))
(EQUAL (TIMES-LIST (APPEND X Y))
(TIMES (TIMES-LIST X)
(TIMES-LIST Y)))
(EQUAL (PRIME-LIST (APPEND X Y))
(AND (PRIME-LIST X)
(PRIME-LIST Y)))
(EQUAL (EQUAL Z (TIMES W Z))
(AND (NUMBERP Z)
(OR (EQUAL Z (ZERO))
(EQUAL W 1))))
(EQUAL (GREATEREQPR X Y)
(NOT (LESSP X Y)))
(EQUAL (EQUAL X (TIMES X Y))
(OR (EQUAL X (ZERO))
(AND (NUMBERP X)
(EQUAL Y 1))))
(EQUAL (REMAINDER (TIMES Y X)
Y)
(ZERO))
(EQUAL (EQUAL (TIMES A B)
1)
(AND (NOT (EQUAL A (ZERO)))
(NOT (EQUAL B (ZERO)))
(NUMBERP A)
(NUMBERP B)
(EQUAL (SUB1 A)
(ZERO))
(EQUAL (SUB1 B)
(ZERO))))
(EQUAL (LESSP (LENGTH (DELETE X L))
(LENGTH L))
(MEMBER X L))
(EQUAL (SORT2 (DELETE X L))
(DELETE X (SORT2 L)))
(EQUAL (DSORT X)
(SORT2 X))
(EQUAL (LENGTH (CONS X1 (CONS X2 (CONS X3 (CONS X4
(CONS X5
(CONS X6 X7)))))))
(PLUS 6 (LENGTH X7)))
(EQUAL (DIFFERENCE (ADD1 (ADD1 X))
2)
(FIX X))
(EQUAL (QUOTIENT (PLUS X (PLUS X Y))
2)
(PLUS X (QUOTIENT Y 2)))
(EQUAL (SIGMA (ZERO)
I)
(QUOTIENT (TIMES I (ADD1 I))
2))
(EQUAL (PLUS X (ADD1 Y))
(IF (NUMBERP Y)
(ADD1 (PLUS X Y))
(ADD1 X)))
(EQUAL (EQUAL (DIFFERENCE X Y)
(DIFFERENCE Z Y))
(IF (LESSP X Y)
(NOT (LESSP Y Z))
(IF (LESSP Z Y)
(NOT (LESSP Y X))
(EQUAL (FIX X)
(FIX Z)))))
(EQUAL (MEANING (PLUS-TREE (DELETE X Y))
A)
(IF (MEMBER X Y)
(DIFFERENCE (MEANING (PLUS-TREE Y)
A)
(MEANING X A))
(MEANING (PLUS-TREE Y)
A)))
(EQUAL (TIMES X (ADD1 Y))
(IF (NUMBERP Y)
(PLUS X (TIMES X Y))
(FIX X)))
(EQUAL (NTH (NIL)
I)
(IF (ZEROP I)
(NIL)
(ZERO)))
(EQUAL (LAST (APPEND A B))
(IF (LISTP B)
(LAST B)
(IF (LISTP A)
(CONS (CAR (LAST A))
B)
B)))
(EQUAL (EQUAL (LESSP X Y)
Z)
(IF (LESSP X Y)
(EQUAL T Z)
(EQUAL F Z)))
(EQUAL (ASSIGNMENT X (APPEND A B))
(IF (ASSIGNEDP X A)
(ASSIGNMENT X A)
(ASSIGNMENT X B)))
(EQUAL (CAR (GOPHER X))
(IF (LISTP X)
(CAR (FLATTEN X))
(ZERO)))
(EQUAL (FLATTEN (CDR (GOPHER X)))
(IF (LISTP X)
(CDR (FLATTEN X))
(CONS (ZERO)
(NIL))))
(EQUAL (QUOTIENT (TIMES Y X)
Y)
(IF (ZEROP Y)
(ZERO)
(FIX X)))
(EQUAL (GET J (SET I VAL MEM))
(IF (EQP J I)
VAL
(GET J MEM))))))))
(TAUTOLOGYP
(LAMBDA (X TRUE-LST FALSE-LST)
(COND
((TRUEP X TRUE-LST)
T)
((FALSEP X FALSE-LST)
NIL)
((NLISTP X)
NIL)
((EQ (CAR X)
(QUOTE IF))
(COND
((TRUEP (CADR X)
TRUE-LST)
(TAUTOLOGYP (CADDR X)
TRUE-LST FALSE-LST))
((FALSEP (CADR X)
FALSE-LST)
(TAUTOLOGYP (CADDDR X)
TRUE-LST FALSE-LST))
(T (AND (TAUTOLOGYP (CADDR X)
(CONS (CADR X)
TRUE-LST)
FALSE-LST)
(TAUTOLOGYP (CADDDR X)
TRUE-LST
(CONS (CADR X)
FALSE-LST))))))
(T NIL))))
(TAUTP
(LAMBDA (X)
(TAUTOLOGYP (REWRITE X)
NIL NIL)))
(TEST
(LAMBDA NIL
(PROG (TM1 TM2 ANS TERM)
(SETQ TM1 (PTIME))
(SETQ TERM (APPLY-SUBST (QUOTE ((X F (PLUS (PLUS A B)
(PLUS C (ZERO))))
(Y F (TIMES (TIMES A B)
(PLUS C D)))
(Z F (REVERSE (APPEND (APPEND A B)
(NIL))))
(U EQUAL (PLUS A B)
(DIFFERENCE X Y))
(W LESSP (REMAINDER A B)
(MEMBER A (LENGTH B)))))
(QUOTE (IMPLIES (AND (IMPLIES X Y)
(AND (IMPLIES Y Z)
(AND (IMPLIES Z U)
(IMPLIES U W))))
(IMPLIES X W)))))
(SETQ ANS (TAUTP TERM))
(SETQ TM2 (PTIME))
(RETURN (LIST ANS (DIFFERENCE (CAR TM2)
(CAR TM1))
(DIFFERENCE (CDR TM2)
(CDR TM1)))))))
(TRANS-OF-IMPLIES
(LAMBDA (N)
(LIST (QUOTE IMPLIES)
(TRANS-OF-IMPLIES1 N)
(LIST (QUOTE IMPLIES)
0 N))))
(TRANS-OF-IMPLIES1
(LAMBDA (N)
(COND
((EQUAL N 1)
(LIST (QUOTE IMPLIES)
0 1))
(T (LIST (QUOTE AND)
(LIST (QUOTE IMPLIES)
(SUB1 N)
N)
(TRANS-OF-IMPLIES1 (SUB1 N)))))))
(TRUEP
(LAMBDA (X LST)
(OR (EQUAL X (QUOTE (T)))
(MEMBER X LST))))
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS TEMP-TEMP UNIFY-SUBST)
)
(PUTPROPS BOYER COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (461 14524 (ADD-LEMMA 471 . 995) (ADD-LEMMA-LST 997 . 1134) (APPLY-SUBST 1136 . 1368) (
APPLY-SUBST-LST 1370 . 1546) (FALSEP 1548 . 1626) (ONE-WAY-UNIFY 1628 . 1744) (ONE-WAY-UNIFY1 1746 .
2136) (ONE-WAY-UNIFY1-LST 2138 . 2348) (PTIME 2350 . 2493) (REWRITE 2495 . 2713) (REWRITE-ARGS 2715 .
2863) (REWRITE-WITH-LEMMAS 2865 . 3112) (SETUP 3114 . 12630) (TAUTOLOGYP 12632 . 13231) (TAUTP 13233
. 13306) (TEST 13308 . 14084) (TRANS-OF-IMPLIES 14086 . 14211) (TRANS-OF-IMPLIES1 14213 . 14443) (
TRUEP 14445 . 14522)))))
STOP
;;; Time (SETUP) and (TEST)
(FILECREATED "25-FEB-83 13:56:49" {PHYLUM}<GABRIEL>BROWSE.;16 4483
changes to: (FNS INIT MATCH!)
previous date: "25-FEB-83 13:16:29" {PHYLUM}<GABRIEL>BROWSE.;14)
(* Copyright (c) 1983 by RPG)
(PRETTYCOMPRINT BROWSECOMS)
(RPAQQ BROWSECOMS ((MACROS CHAR1)
(FNS INIT RANDOM SEED RANDOMIZE MATCH! BROWSE INVESTIGATE)
(GLOBALVARS RAND)
(INITVARS (RAND 21))))
(DECLARE: EVAL@COMPILE
(PUTPROPS CHAR1 MACRO ((X) (NTHCHAR X 1)))
)
(DEFINEQ
(INIT
(LAMBDA (N M NPATS IPATS) (* JonL "25-FEB-83 13:54")
(PROG ((IPATS (SUBST NIL NIL IPATS)))
(for P on IPATS while (CDR P) finally (RPLACD P IPATS))
(RETURN (bind (A ← NIL) for old N from N to 1 by -1 as (I ← M) by (if (ZEROP I)
then M
else (SUB1 I))
as (NAME ←(GENSYM)) by (GENSYM)
do (push A NAME)
(RPTQ I (PUTPROP NAME (GENSYM)
NIL))
(PUTPROP NAME (QUOTE PATTERN)
(bind (A ← NIL) for I from NPATS to 1 by -1 as IPATS on IPATS
do (push A (CAR IPATS)) finally (RETURN A)))
(RPTQ (DIFFERENCE M I)
(PUTPROP NAME (GENSYM)
NIL))
finally (RETURN A))))))
(RANDOM
[LAMBDA NIL (* edited: "25-FEB-83 13:07")
(SETQ RAND (IMOD (ITIMES RAND 17)
251])
(SEED
[LAMBDA NIL (* edited: "25-FEB-83 13:07")
(SETQ RAND 21])
(RANDOMIZE
[LAMBDA (L) (* edited: "25-FEB-83 13:11")
(bind (A ← NIL) while L
do [PROG [(N (IMOD (RANDOM)
(LENGTH L]
(COND
((ZEROP N)
(push A (CAR L))
(SETQ L (CDR L)))
(T (for N from N to 2 by -1 as X on L do NIL finally (PROGN (push A (CADR X))
(RPLACD X (CDDR X]
finally (RETURN A])
(MATCH!
(LAMBDA (PAT DAT ALIST) (* JonL "25-FEB-83 13:38")
(COND
((NULL PAT)
(NULL DAT))
((NULL DAT)
NIL)
((OR (EQ (CAR PAT)
(QUOTE ?))
(EQ (CAR PAT)
(CAR DAT)))
(MATCH! (CDR PAT)
(CDR DAT)
ALIST))
((EQ (CAR PAT)
(QUOTE *))
(OR (MATCH! (CDR PAT)
DAT ALIST)
(MATCH! (CDR PAT)
(CDR DAT)
ALIST)
(MATCH! PAT (CDR DAT)
ALIST)))
(T (COND
((NLISTP (CAR PAT))
(COND
((EQ (CHAR1 (CAR PAT))
(QUOTE ?))
(PROG ((VAL (FASSOC (CAR PAT)
ALIST)))
(RETURN (COND
(VAL (MATCH! (CONS (CDR VAL)
(CDR PAT))
DAT ALIST))
(T (MATCH! (CDR PAT)
(CDR DAT)
(CONS (CONS (CAR PAT)
(CAR DAT))
ALIST)))))))
((EQ (CHAR1 (CAR PAT))
(QUOTE *))
(PROG ((VAL (FASSOC (CAR PAT)
ALIST)))
(RETURN (COND
(VAL (MATCH! (APPEND (CDR VAL)
(CDR PAT))
DAT ALIST))
(T (for (L ← NIL) by (NCONC L (LIST (CAR D))) as E
on (CONS NIL DAT) as (D ← DAT) by (CDR D)
do (COND
((MATCH! (CDR PAT)
D
(CONS (CONS (CAR PAT)
L)
ALIST))
(RETURN T)))))))))))
(T (AND (NOT (NLISTP (CAR DAT)))
(MATCH! (CAR PAT)
(CAR DAT)
ALIST)
(MATCH! (CDR PAT)
(CDR DAT)
ALIST))))))))
(BROWSE
[LAMBDA NIL (* edited: "25-FEB-83 13:14")
(SEED)
(INVESTIGATE [RANDOMIZE (INIT 100 10 4
(QUOTE ((A A A B B B B A A A A A B B A A A)
(A A B B B B A A (A A)
(B B))
(A A A B (B A)
B A B A]
(QUOTE ((*A ?B *B ?B A *A A *B *A)
(*A *B *B *A (*A)
(*B))
(? ? *(B A)* ? ?])
(INVESTIGATE
[LAMBDA (UNITS PATS) (* edited: "25-FEB-83 13:07")
(for UNITS on UNITS do (for PATS on PATS do (for P on (GETP (CAR UNITS)
(QUOTE PATTERN))
do (MATCH! (CAR PATS)
(CAR P)
NIL])
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS RAND)
)
(RPAQ? RAND 21)
(PUTPROPS BROWSE COPYRIGHT ("RPG" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (475 4335 (INIT 485 . 1319) (RANDOM 1321 . 1478) (SEED 1480 . 1604) (RANDOMIZE 1606 .
2074) (MATCH! 2076 . 3588) (BROWSE 3590 . 4008) (INVESTIGATE 4010 . 4333)))))
STOP
;;; Time (BROWSE)
(FILECREATED " 5-JUL-83 13:07:00" {PHYLUM}<GABRIEL>CTAK.;1 857
changes to: (VARS CTAKCOMS)
(FNS TAK TAK1 TAKCALLER))
(PRETTYCOMPRINT CTAKCOMS)
(RPAQQ CTAKCOMS ((FNS TAK TAK1 TAKCALLER)))
(DEFINEQ
(TAK
(LAMBDA (X Y Z) (* JonL " 5-JUL-83 12:51")
(TAKCALLER X Y Z)))
(TAK1
(LAMBDA (X Y Z) (* JonL " 5-JUL-83 12:47")
(COND
((NOT (ILESSP Y X))
(RETFROM (QUOTE TAKCALLER)
Z))
(T (TAK1 (TAKCALLER (SUB1 X)
Y Z)
(TAKCALLER (SUB1 Y)
Z X)
(TAKCALLER (SUB1 Z)
X Y))))))
(TAKCALLER
(LAMBDA (X Y Z) (* JonL " 5-JUL-83 12:47")
(TAK1 X Y Z)))
)
(PUTPROPS CTAK COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (215 802 (TAK 225 . 353) (TAK1 355 . 669) (TAKCALLER 671 . 800)))))
STOP
;;; Time (TAK 18 12 6)
(FILECREATED "11-FEB-83 14:21:49" {PHYLUM}<GABRIEL>DDERIV.;2 3363
changes to: (VARS DDERIVCOMS)
(FNS RUN HEADIFY DERIV QUOTIENT.DERIV TIMES.DERIV DIFFERENCE.DERIV PLUS.DERIV DER1)
(PROPS (QUOTIENT DERIV)
(TIMES DERIV)
(DIFFERENCE DERIV)
(PLUS DERIV))
previous date: "11-FEB-83 14:09:15" {PHYLUM}<GABRIEL>DDERIV.;1)
(* Copyright (c) 1983 by RPG)
(PRETTYCOMPRINT DDERIVCOMS)
(RPAQQ DDERIVCOMS ((FNS RUN DERIV QUOTIENT.DERIV TIMES.DERIV DIFFERENCE.DERIV PLUS.DERIV DER1)
(PROP DERIV QUOTIENT TIMES DIFFERENCE PLUS)
(FNS HEADIFY)
(INITVARS (RUNTIMES 1000))
(P (for X in (QUOTE (PLUS DIFFERENCE TIMES QUOTIENT))
do
(HEADIFY X (QUOTE DERIV))))))
(DEFINEQ
(RUN
(LAMBDA NIL (* JonL "11-FEB-83 14:20")
(DECLARE (GLOBALVARS RUNTIMES))
(to RUNTIMES (DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5))))))
(DERIV
(LAMBDA (A) (* JonL "11-FEB-83 14:08")
(COND
((ATOM A)
(COND
((EQ A (QUOTE X))
1)
(T 0)))
(T (PROG ((DERIV (GETP (CAR A)
(QUOTE DERIV))))
(RETURN (COND
(DERIV (APPLY* DERIV (CDR A)))
(T (QUOTE ERROR)))))))))
(QUOTIENT.DERIV
(LAMBDA (A) (* JonL "11-FEB-83 13:39")
(LIST (QUOTE DIFFERENCE)
(LIST (QUOTE QUOTIENT)
(DERIV (CAR A))
(CADR A))
(LIST (QUOTE QUOTIENT)
(CAR A)
(LIST (QUOTE TIMES)
(CADR A)
(CADR A)
(DERIV (CADR A)))))))
(TIMES.DERIV
(LAMBDA (A) (* JonL "11-FEB-83 13:39")
(LIST (QUOTE TIMES)
(CONS (QUOTE TIMES)
A)
(CONS (QUOTE PLUS)
(MAPCAR A (QUOTE DER1))))))
(DIFFERENCE.DERIV
(LAMBDA (A) (* JonL "11-FEB-83 13:39")
(CONS (QUOTE DIFFERENCE)
(MAPCAR A (QUOTE DERIV)))))
(PLUS.DERIV
(LAMBDA (A) (* JonL "11-FEB-83 13:39")
(CONS (QUOTE PLUS)
(MAPCAR A (QUOTE DERIV)))))
(DER1
(LAMBDA (A) (* JonL "11-FEB-83 13:39")
(LIST (QUOTE QUOTIENT)
(DERIV A)
A)))
)
(PUTPROPS QUOTIENT DERIV QUOTIENT.DERIV)
(PUTPROPS TIMES DERIV TIMES.DERIV)
(PUTPROPS DIFFERENCE DERIV DIFFERENCE.DERIV)
(PUTPROPS PLUS DERIV PLUS.DERIV)
(DEFINEQ
(HEADIFY
(LAMBDA (X PROP) (* JonL "11-FEB-83 14:08")
(PROG ((L (GETPROPLIST X)))
(if (FMEMB PROP (CDDR L))
then (SETPROPLIST X (CONS PROP (CONS (GETP X PROP)
L)))))))
)
(RPAQ? RUNTIMES 1000)
(for X in (QUOTE (PLUS DIFFERENCE TIMES QUOTIENT))
do
(HEADIFY X (QUOTE DERIV)))
(PUTPROPS DDERIV COPYRIGHT ("RPG" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (727 2731 (RUN 737 . 1361) (DERIV 1363 . 1694) (QUOTIENT.DERIV 1696 . 2022) (TIMES.DERIV
2024 . 2236) (DIFFERENCE.DERIV 2238 . 2411) (PLUS.DERIV 2413 . 2574) (DER1 2576 . 2729)) (2914 3182 (
HEADIFY 2924 . 3180)))))
STOP
;;; Time (RUN)
(FILECREATED "10-FEB-83 13:56:46" {PHYLUM}<GABRIEL>DERIV.;2 2015
changes to: (FNS DER1 DERIV RUN)
(VARS DERIVCOMS)
previous date: "10-FEB-83 13:50:32" {PHYLUM}<GABRIEL>DERIV.;1)
(* Copyright (c) 1983 by RPG)
(PRETTYCOMPRINT DERIVCOMS)
(RPAQQ DERIVCOMS ((FNS DER1 DERIV RUN)))
(DEFINEQ
(DER1
(LAMBDA (A) (* JonL "10-FEB-83 13:56")
(LIST (QUOTE QUOTIENT)
(DERIV A)
A)))
(DERIV
(LAMBDA (A) (* JonL "10-FEB-83 13:56")
(COND
((ATOM A)
(COND
((EQ A (QUOTE X))
1)
(T 0)))
((EQ (QUOTE PLUS)
(CAR A))
(CONS (QUOTE PLUS)
(MAPCAR (CDR A)
(QUOTE DERIV))))
((EQ (QUOTE DIFFERENCE)
(CAR A))
(CONS (QUOTE DIFFERENCE)
(MAPCAR (CDR A)
(QUOTE DERIV))))
((EQ (QUOTE TIMES)
(CAR A))
(LIST (QUOTE TIMES)
A
(CONS (QUOTE PLUS)
(MAPCAR (CDR A)
(QUOTE DER1)))))
((EQ (QUOTE QUOTIENT)
(CAR A))
(LIST (QUOTE DIFFERENCE)
(LIST (QUOTE QUOTIENT)
(DERIV (CADR A))
(CADDR A))
(LIST (QUOTE QUOTIENT)
(CADR A)
(LIST (QUOTE TIMES)
(CADDR A)
(CADDR A)
(DERIV (CADDR A))))))
(T (QUOTE ERROR)))))
(RUN
(LAMBDA NIL (* JonL "10-FEB-83 13:56")
(for I to 1000
do (DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5)))
(DERIV (QUOTE (PLUS (TIMES 3 X X)
(TIMES A X X)
(TIMES B X)
5))))))
)
(PUTPROPS DERIV COPYRIGHT ("RPG" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (311 1953 (DER1 321 . 474) (DERIV 476 . 1313) (RUN 1315 . 1951)))))
STOP
;;; Time (RUN)
(FILECREATED " 9-FEB-83 15:37:32" {PHYLUM}<GABRIEL>DESTRUCTIVE.;4 1618
changes to: (FNS DESTRUCTIVE)
(VARS DESTRUCTIVECOMS)
(MACROS COLLECTN)
previous date: " 9-FEB-83 14:03:21" {PHYLUM}<GABRIEL>DESTRUCTIVE.;3)
(* Copyright (c) 1983 by HornBlower)
(PRETTYCOMPRINT DESTRUCTIVECOMS)
(RPAQQ DESTRUCTIVECOMS ((FNS DESTRUCTIVE)
(MACROS COLLECTN)))
(DEFINEQ
(DESTRUCTIVE
(LAMBDA (n m) (* JonL " 9-FEB-83 15:37")
(PROG ((l (COLLECTN 10)))
(for i from n by -1 to 1
do (if (NULL (CAR l))
then (for L on l
do (OR (CAR L)
(RPLACA L (LIST NIL)))
(NCONC (CAR L)
(COLLECTN m)))
else (for l1 on l as l2 on (CDR l)
do (RPLACD (for j from (IQUOTIENT (FLENGTH (CAR l2))
2)
by -1 to 1 as a on (CAR l2) do (RPLACA a i)
finally (RETURN a))
(PROG ((n (IQUOTIENT (FLENGTH (CAR l1))
2)))
(RETURN (if (ZEROP n)
then (RPLACA l1 NIL)
(CAR l1)
else (for j from n by -1 to 2 as a
on (CAR l1) do (RPLACA a i)
finally (RETURN (PROG1 (CDR a)
(RPLACD a NIL)))))
))))))
(RETURN l))))
)
(DECLARE: EVAL@COMPILE
(PUTPROPS COLLECTN MACRO ((N)
(PROG (VAL)
(FRPTQ N (PUSH VAL NIL))
(RETURN VAL))))
)
(PUTPROPS DESTRUCTIVE COPYRIGHT ("HornBlower" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (386 1405 (DESTRUCTIVE 396 . 1403)))))
STOP
;;; Time (DESTRUCTIVE 600 50)
(FILECREATED "10-FEB-83 13:34:00" {PHYLUM}<GABRIEL>DIV2.;4 1686
changes to: (FNS FTEST1 TEST1 TEST2 DV2 CREATEN DIV2)
(VARS DIV2COMS)
previous date: "10-FEB-83 13:31:12" {PHYLUM}<GABRIEL>DIV2.;1)
(* Copyright (c) 1983 by RPG)
(PRETTYCOMPRINT DIV2COMS)
(RPAQQ DIV2COMS ((FNS CREATEN DIV2 DV2 FTEST1 TEST1 TEST2)
(VARS (L (CREATEN 200)))))
(DEFINEQ
(CREATEN
(LAMBDA (n) (* JonL "10-FEB-83 13:29")
(to n collect NIL)))
(DIV2
(LAMBDA (l) (* JonL "10-FEB-83 13:27")
(for L A on l by (CDDR L) do (push A (CAR L)) finally (RETURN A))))
(DV2
(LAMBDA (l) (* JonL "10-FEB-83 13:31")
(if (NULL l)
then NIL
else (CONS (CAR l)
(DV2 (CDDR l))))))
(FTEST1
(LAMBDA (L) (* JonL "10-FEB-83 13:33")
(FRPTQ 300 (PROGN (DIV2 L)
(DIV2 L)
(DIV2 L)
(DIV2 L)))))
(TEST1
(LAMBDA (L) (* JonL "10-FEB-83 13:33")
(for I from 300 by -1 until (EQ I 0)
do (DIV2 L)
(DIV2 L)
(DIV2 L)
(DIV2 L))))
(TEST2
(LAMBDA (L) (* JonL "10-FEB-83 13:33")
(for I from 300 by -1 until (EQ I 0)
do (DV2 L)
(DV2 L)
(DV2 L)
(DV2 L))))
)
(RPAQ L (CREATEN 200))
(PUTPROPS DIV2 COPYRIGHT ("RPG" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (376 1597 (CREATEN 386 . 523) (DIV2 525 . 722) (DV2 724 . 914) (FTEST1 916 . 1121) (
TEST1 1123 . 1360) (TEST2 1362 . 1595)))))
STOP
;;; Time (FTEST1), (TEST1), and (TEST2)
(FILECREATED "22-FEB-83 04:12:43" {PHYLUM}<GABRIEL>FFFT.;3 3984
changes to: (FNS FFFT)
(VARS FFFTCOMS)
(MACROS IEXPT)
previous date: "22-FEB-83 03:48:03" {PHYLUM}<GABRIEL>FFFT.;1)
(* Copyright (c) 1983 by JonL)
(PRETTYCOMPRINT FFFTCOMS)
(RPAQQ FFFTCOMS ((FILES (SYSLOAD FROM LISPUSERS)
CMLARRAY)
(FNS FFFT)
(VARS (RE (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(IM (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0)))
(MACROS IEXPT)))
(FILESLOAD (SYSLOAD FROM LISPUSERS)
CMLARRAY)
(DEFINEQ
(FFFT
(LAMBDA (AREAL AIMAG) (* JonL "22-FEB-83 04:11")
(* Fast Fourier Transform AREAL = real part AIMAG =
imaginary part)
(PROG (AR AI PI I J K M N LE LE1 IP NV2 NM1 UR UI WR WI TR TI)
(SETQ AR AREAL) (* Initialize)
(SETQ AI AIMAG)
(SETQ PI 3.141593)
(SETQ N (ARRAYDIMENSION AR 0))
(add N -1)
(SETQ NV2 (LRSH N 1))
(SETQ NM1 (SUB1 N))
(SETQ M 0)
(SETQ I 1)
L1 (until (NOT (ILESSP I N))
do (* Compute M = log (N))
(add M 1)
(add I I)
finally (if (NOT (IEQP N (IEXPT 2 M)))
then (PRINC "Error ... array size not a power of two.")
(READ)
(RETURN (TERPRI))))
(SETQ J 1) (* ;Interchange elements)
(SETQ I 1) (* ;in bit-reversed order)
L3 (repeatuntil (NOT (ILESSP I N))
do (if (ILESSP I J)
then (SETQ TR (\PAREF AR J))
(SETQ TI (\PAREF AI J))
(\PASET (\PAREF AR I)
AR J)
(\PASET (\PAREF AI I)
AI J)
(\PASET TR AR I)
(\PASET TI AI I))
(SETQ K NV2)
L6
(until (NOT (ILESSP K J))
do (SETQ J (IDIFFERENCE J K))
(SETQ K (LRSH K 1)))
(SETQ J (IPLUS J K))
(add I 1))
(for L to M
do (* ;Loop thru stages)
(SETQ LE (IEXPT 2 L))
(SETQ LE1 (LRSH LE 1))
(SETQ UR 1.0)
(SETQ UI 0.0)
(SETQ WR (COS (FQUOTIENT PI (FLOAT LE1))))
(SETQ WI (SIN (FQUOTIENT PI (FLOAT LE1))))
(for J to LE1
do (* ;Loop thru butterflies)
(for I from J by LE until (IGREATERP I N)
do (* ;Do a butterfly)
(SETQ IP (IPLUS I LE1))
(SETQ TR (FDIFFERENCE (FTIMES (\PAREF AR IP)
UR)
(FTIMES (\PAREF AI IP)
UI)))
(SETQ TI (FPLUS (FTIMES (\PAREF AR IP)
UI)
(FTIMES (\PAREF AI IP)
UR)))
(\PASET (FDIFFERENCE (\PAREF AR I)
TR)
AR IP)
(\PASET (FDIFFERENCE (\PAREF AI I)
TI)
AI IP)
(\PASET (FPLUS (\PAREF AR I)
TR)
AR I)
(\PASET (FPLUS (\PAREF AI I)
TI)
AI I))
(SETQ TR (FDIFFERENCE (FTIMES UR WR)
(FTIMES UI WI)))
(SETQ TI (FPLUS (FTIMES UR WI)
(FTIMES UI WR)))
(SETQ UR TR)
(SETQ UI TI)))
(RETURN T))))
)
(RPAQ RE (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(RPAQ IM (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(DECLARE: EVAL@COMPILE
(PUTPROPS IEXPT MACRO (X
(PROG ((N (CAR (CONSTANTEXPRESSIONP (CAR X))))
(E (CADR X)))
(RETURN (if (AND (FIXP N)
(POWEROFTWOP N))
then (if (NEQ 2 N)
then (SETQ E (BQUOTE (ITIMES , (SUB1 (INTEGERLENGTH N))
,E))))
(BQUOTE (MASK.1'S , E 1))
else (BQUOTE (EXPT (IPLUS 0 , (CAR X))
(IPLUS 0 , (CADR X)))))))))
)
(PUTPROPS FFFT COPYRIGHT ("JonL" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (560 3379 (FFFT 570 . 3377)))))
STOP
;;; Time (FFFT) [Note: you'll need Jonl White's CMLARRAY package. JONL@PARC]
(FILECREATED "22-FEB-83 04:12:09" {PHYLUM}<GABRIEL>FFT.;3 3932
changes to: (VARS FFTCOMS)
(MACROS IEXPT)
(FNS FFT)
previous date: "22-FEB-83 03:39:39" {PHYLUM}<GABRIEL>FFT.;1)
(* Copyright (c) 1983 by JonL)
(PRETTYCOMPRINT FFTCOMS)
(RPAQQ FFTCOMS ((FILES (SYSLOAD FROM LISPUSERS)
CMLARRAY)
(FNS FFT)
(VARS (RE (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(IM (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0)))
(MACROS IEXPT)))
(FILESLOAD (SYSLOAD FROM LISPUSERS)
CMLARRAY)
(DEFINEQ
(FFT
(LAMBDA (AREAL AIMAG) (* JonL "22-FEB-83 04:11")
(* Fast Fourier Transform AREAL = real part AIMAG =
imaginary part)
(PROG (AR AI PI I J K M N LE LE1 IP NV2 NM1 UR UI WR WI TR TI)
(SETQ AR AREAL) (* Initialize)
(SETQ AI AIMAG)
(SETQ PI 3.141593)
(SETQ N (ARRAYDIMENSION AR 0))
(add N -1)
(SETQ NV2 (LRSH N 1))
(SETQ NM1 (SUB1 N))
(SETQ M 0)
(SETQ I 1)
L1 (until (NOT (ILESSP I N))
do (* Compute M = log (N))
(add M 1)
(add I I))
(if (NOT (IEQP N (IEXPT 2 M)))
then (PRINC "Error ... array size not a power of two.")
(READ)
(RETURN (TERPRI)))
(SETQ J 1) (* ;Interchange elements)
(SETQ I 1) (* ;in bit-reversed order)
L3 (repeatuntil (NOT (ILESSP I N))
do (if (ILESSP I J)
then (SETQ TR (PAREF AR J))
(SETQ TI (PAREF AI J))
(PASET (PAREF AR I)
AR J)
(PASET (PAREF AI I)
AI J)
(PASET TR AR I)
(PASET TI AI I))
(SETQ K NV2)
L6
(until (NOT (ILESSP K J))
do (SETQ J (IDIFFERENCE J K))
(SETQ K (LRSH K 1)))
(SETQ J (IPLUS J K))
(add I 1))
(for L to M
do (* ;Loop thru stages)
(SETQ LE (IEXPT 2 L))
(SETQ LE1 (LRSH LE 1))
(SETQ UR 1.0)
(SETQ UI 0.0)
(SETQ WR (COS (FQUOTIENT PI (FLOAT LE1))))
(SETQ WI (SIN (FQUOTIENT PI (FLOAT LE1))))
(for J to LE1
do (* ;Loop thru butterflies)
(for I from J by LE until (IGREATERP I N)
do (* ;Do a butterfly)
(SETQ IP (IPLUS I LE1))
(SETQ TR (FDIFFERENCE (FTIMES (PAREF AR IP)
UR)
(FTIMES (PAREF AI IP)
UI)))
(SETQ TI (FPLUS (FTIMES (PAREF AR IP)
UI)
(FTIMES (PAREF AI IP)
UR)))
(PASET (FDIFFERENCE (PAREF AR I)
TR)
AR IP)
(PASET (FDIFFERENCE (PAREF AI I)
TI)
AI IP)
(PASET (FPLUS (PAREF AR I)
TR)
AR I)
(PASET (FPLUS (PAREF AI I)
TI)
AI I))
(SETQ TR (FDIFFERENCE (FTIMES UR WR)
(FTIMES UI WI)))
(SETQ TI (FPLUS (FTIMES UR WI)
(FTIMES UI WR)))
(SETQ UR TR)
(SETQ UI TI)))
(RETURN T))))
)
(RPAQ RE (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(RPAQ IM (MAKEARRAY 1025 (QUOTE INITIALELEMENT)
0.0))
(DECLARE: EVAL@COMPILE
(PUTPROPS IEXPT MACRO (X
(PROG ((N (CAR (CONSTANTEXPRESSIONP (CAR X))))
(E (CADR X)))
(RETURN (if (AND (FIXP N)
(POWEROFTWOP N))
then (if (NEQ 2 N)
then (SETQ E (BQUOTE (ITIMES , (SUB1 (INTEGERLENGTH N))
,E))))
(BQUOTE (MASK.1'S , E 1))
else (BQUOTE (EXPT (IPLUS 0 , (CAR X))
(IPLUS 0 , (CADR X)))))))))
)
(PUTPROPS FFT COPYRIGHT ("JonL" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (553 3328 (FFT 563 . 3326)))))
STOP
;;; Time FFT
(FILECREATED " 5-JUL-83 14:29:33" {PHYLUM}<GABRIEL>FPRINT.;4 2137
changes to: (VARS FPRINTCOMS TESTATOMS)
(FNS FPRINT INIT INIT1)
previous date: " 5-JUL-83 14:13:19" {PHYLUM}<GABRIEL>FPRINT.;3)
(PRETTYCOMPRINT FPRINTCOMS)
(RPAQQ FPRINTCOMS ((FNS INIT INIT1 FPRINT)
(VARS TESTATOMS (TESTPATTERN (INIT 6 6 TESTATOMS)))
(P (COND ((INFILEP (QUOTE FPRINT.TST)))
(T (PROG ((F (OPENFILE (QUOTE FPRINT.TST)
(QUOTE OUTPUT))))
(PRINT TESTPATTERN F)
(CLOSEF F)))))
(GLOBALVARS TESTATOMS TESTPATTERN)))
(DEFINEQ
(INIT
(LAMBDA (M N ATOMS) (* JonL " 5-JUL-83 13:47")
(PROG ((ATOMS (SUBST NIL NIL ATOMS)))
(bind (A ← ATOMS)
do (INIT1 M N ATOMS)
(pop A)
until (NULL (CDR A)) finally (RETURN (RPLACD A ATOMS))))))
(INIT1
(LAMBDA (M N ATOMS) (* JonL " 5-JUL-83 13:26")
(COND
((ZEROP M)
(POP ATOMS))
(T (bind A for I from N by -2 until (ILESSP I 1)
do (push A (pop ATOMS))
(push A (INIT1 (SUB1 M)
N ATOMS))
finally (RETURN A))))))
(FPRINT
(LAMBDA NIL (* JonL " 5-JUL-83 14:24")
(PROG ((F (INFILEP (QUOTE FPRINT.TST))))
(COND
(F (DELFILE F)))
(SETQ F (OPENFILE (QUOTE FPRINT.TST)
(QUOTE OUTPUT)))
(PRINT TESTPATTERN F)
(RETURN (CLOSEF F)))))
)
(RPAQQ TESTATOMS (ABCDEF12 CDEFGH23 EFGHIJ34 GHIJKL45 IJKLMN56 KLMNOP67 MNOPQR78 OPRST89 QRSTUV90
STUVWX01 UVWXYZ12 WXYZAB23 XYZABC34 123456AB 234567BC 345678CD 456789DE
567890EF 678901FG 789012GH 890123HI))
(RPAQ TESTPATTERN (INIT 6 6 TESTATOMS))
(COND ((INFILEP (QUOTE FPRINT.TST)))
(T (PROG ((F (OPENFILE (QUOTE FPRINT.TST)
(QUOTE OUTPUT))))
(PRINT TESTPATTERN F)
(CLOSEF F))))
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS TESTATOMS TESTPATTERN)
)
(PUTPROPS FPRINT COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (574 1564 (INIT 584 . 881) (INIT1 883 . 1238) (FPRINT 1240 . 1562)))))
STOP
;;; Time (FPRINT)
(FILECREATED " 5-JUL-83 14:36:33" {PHYLUM}<GABRIEL>FREAD.;1 672
changes to: (VARS FREADCOMS)
(FNS FREAD))
(PRETTYCOMPRINT FREADCOMS)
(RPAQQ FREADCOMS ((FNS FREAD)
(P (COND ((NOT (INFILEP (QUOTE FPRINT.TST)))
(PRIN1 "Make FPRINT.TST")
(TERPRI))))))
(DEFINEQ
(FREAD
(LAMBDA NIL (* JonL " 5-JUL-83 14:32")
(PROG ((F (OPENFILE (QUOTE FPRINT.TST)
(QUOTE INPUT))))
(READ F)
(RETURN (CLOSEF F)))))
)
(COND ((NOT (INFILEP (QUOTE FPRINT.TST)))
(PRIN1 "Make FPRINT.TST")
(TERPRI)))
(PUTPROPS FREAD COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (294 523 (FREAD 304 . 521)))))
STOP
;;; Time (FREAD)
(FILECREATED "24-FEB-83 11:26:22" {PHYLUM}<GABRIEL>PUZZLE.;6 5683
changes to: (VARS TYPEMAX)
(FNS FIT PLACE REMOVE! TRIAL START DEFINEPIECE FRESHPUZZLES)
previous date: "17-FEB-83 10:03:35" {PHYLUM}<GABRIEL>PUZZLE.;4)
(* Copyright (c) 1982, 1983 by Xerox Corporation)
(PRETTYCOMPRINT PUZZLECOMS)
(RPAQQ PUZZLECOMS ((FILES (SYSLOAD COMPILED)
CMLARRAY)
(CONSTANTS SIZE TYPEMAX D CLASSMAX)
(FNS FIT PLACE REMOVE! TRIAL DEFINEPIECE START FRESHPUZZLES)
(MACROS CLASS PIECEMAX PUZZLE P PIECECOUNT)
(INITVARS (CLASS NIL)
(PIECEMAX NIL)
(PUZZLE NIL)
(P NIL)
(PIECECOUNT NIL)
(PUZZLETRACEFLG NIL))
(GLOBALVARS CLASS PIECEMAX PUZZLE P PIECECOUNT III PUZZLETRACEFLG)
(SPECVARS KOUNT)
(P (FRESHPUZZLES))))
(FILESLOAD (SYSLOAD COMPILED)
CMLARRAY)
(DECLARE: EVAL@COMPILE
(RPAQQ SIZE 511)
(RPAQQ TYPEMAX 12)
(RPAQQ D 8)
(RPAQQ CLASSMAX 3)
(CONSTANTS SIZE TYPEMAX D CLASSMAX)
)
(DEFINEQ
(FIT
(LAMBDA (I J) (* JonL "16-FEB-83 14:50")
(NOT (find K from 0 to (PIECEMAX I) suchthat (AND (P I K)
(PUZZLE (IPLUS J K)))))))
(PLACE
(LAMBDA (I J) (* JonL "16-FEB-83 21:07")
(for K from 0 to (PIECEMAX I) do (if (P I K)
then (PASET T PUZZLE (IPLUS J K))))
(16ASET (SUB1 (PIECECOUNT (CLASS I)))
PIECECOUNT
(CLASS I))
(OR (find K from J to SIZE suchthat (NOT (PUZZLE K)))
0)))
(REMOVE!
(LAMBDA (I J) (* JonL "16-FEB-83 21:07")
(for K from 0 to (PIECEMAX I) do (if (P I K)
then (PASET NIL PUZZLE (IPLUS J K))))
(16ASET (ADD1 (PIECECOUNT (CLASS I)))
PIECECOUNT
(CLASS I))))
(TRIAL
(LAMBDA (J) (* edited: "17-FEB-83 10:02")
(bind (K ← 0) for I from 0 to TYPEMAX
do (if (AND (NEQ 0 (PIECECOUNT (CLASS I)))
(FIT I J))
then (SETQ K (PLACE I J))
(if (OR (TRIAL K)
(ZEROP K))
then (AND PUZZLETRACEFLG (printout NIL T "Piece" .TAB "at" .TAB (ADD1 K)))
(add KOUNT 1)
(RETURN T)
else (REMOVE! I J)))
finally (PROGN (add KOUNT 1)
NIL))))
(DEFINEPIECE
(LAMBDA (ICLASS II JJ KK) (* JonL "16-FEB-83 17:15")
(PROG ((INDEX 0))
(for I from 0 to II do (for J from 0 to JJ
do (for K from 0 to KK
do (SETQ INDEX (IPLUS I (ITIMES D (IPLUS J
(ITIMES D K)))))
(PASET T P III INDEX))))
(16ASET ICLASS CLASS III)
(16ASET INDEX PIECEMAX III)
(if (NEQ III TYPEMAX)
then (add III 1)))))
(START
(LAMBDA NIL (* JonL "16-FEB-83 22:21")
(for M from 0 to SIZE do (PASET T PUZZLE M))
(for I from 1 to 5 do (for J from 1 to 5
do (for K from 1 to 5
do (PASET NIL PUZZLE (IPLUS I (ITIMES D (IPLUS J (ITIMES D K)))))))
)
(for I from 0 to TYPEMAX do (for M from 0 to SIZE do (PASET NIL P I M)))
(SETQ III 0)
(DEFINEPIECE 0 3 1 0)
(DEFINEPIECE 0 1 0 3)
(DEFINEPIECE 0 0 3 1)
(DEFINEPIECE 0 1 3 0)
(DEFINEPIECE 0 3 0 1)
(DEFINEPIECE 0 0 1 3)
(DEFINEPIECE 1 2 0 0)
(DEFINEPIECE 1 0 2 0)
(DEFINEPIECE 1 0 0 2)
(DEFINEPIECE 2 1 1 0)
(DEFINEPIECE 2 1 0 1)
(DEFINEPIECE 2 0 1 1)
(DEFINEPIECE 3 1 1 1)
(16ASET 13 PIECECOUNT 0)
(16ASET 3 PIECECOUNT 1)
(16ASET 1 PIECECOUNT 2)
(16ASET 1 PIECECOUNT 3)
(PROG ((M (IPLUS 1 (ITIMES D (IPLUS 1 D))))
(N 0)
(KOUNT 0))
(if (FIT 0 M)
then (SETQ N (PLACE 0 M))
else (printout NIL T "Error"))
(if (TRIAL N)
then (printout NIL T "Success in " KOUNT " trials.")
else (printout NIL T "Failure."))
(TERPRI))))
(FRESHPUZZLES
(LAMBDA NIL (* JonL "16-FEB-83 21:12")
(SETQ CLASS (MAKEARRAY (ADD1 TYPEMAX)
(QUOTE ELEMENTTYPE)
(QUOTE (MOD 65535))))
(SETQ PIECEMAX (MAKEARRAY (ADD1 TYPEMAX)
(QUOTE ELEMENTTYPE)
(QUOTE (MOD 65535))))
(SETQ PUZZLE (MAKEARRAY (IPLUS SIZE 2)))
(SETQ P (MAKEARRAY (LIST (ADD1 TYPEMAX)
(IPLUS SIZE 2))))
(SETQ PIECECOUNT (MAKEARRAY (IPLUS CLASSMAX 2)
(QUOTE ELEMENTTYPE)
(QUOTE (MOD 65535))))
NIL))
)
(DECLARE: EVAL@COMPILE
(PUTPROPS CLASS MACRO ((I . REST)
(16AREF CLASS I . REST)))
(PUTPROPS PIECEMAX MACRO ((I . REST)
(16AREF PIECEMAX I . REST)))
(PUTPROPS PUZZLE MACRO ((I . REST)
(PAREF PUZZLE I . REST)))
(PUTPROPS P MACRO ((I . REST)
(PAREF P I . REST)))
(PUTPROPS PIECECOUNT MACRO ((I . REST)
(16AREF PIECECOUNT I . REST)))
)
(RPAQ? CLASS NIL)
(RPAQ? PIECEMAX NIL)
(RPAQ? PUZZLE NIL)
(RPAQ? P NIL)
(RPAQ? PIECECOUNT NIL)
(RPAQ? PUZZLETRACEFLG NIL)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS CLASS PIECEMAX PUZZLE P PIECECOUNT III PUZZLETRACEFLG)
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(SPECVARS KOUNT)
)
(FRESHPUZZLES)
(PUTPROPS PUZZLE COPYRIGHT ("Xerox Corporation" 1982 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1003 4888 (FIT 1013 . 1229) (PLACE 1231 . 1602) (REMOVE! 1604 . 1901) (TRIAL 1903 .
2464) (DEFINEPIECE 2466 . 2989) (START 2991 . 4348) (FRESHPUZZLES 4350 . 4886)))))
STOP
;;; Time (START). (FRESHPUZZLES) re-initializes
(FILECREATED "22-FEB-83 06:43:43" {PHYLUM}<GABRIEL>SFFT.;4 3714
changes to: (VARS SFFTCOMS)
(FNS SFFT)
previous date: "22-FEB-83 05:17:28" {PHYLUM}<GABRIEL>SFFT.;1)
(* Copyright (c) 1983 by JonL)
(PRETTYCOMPRINT SFFTCOMS)
(RPAQQ SFFTCOMS ((FNS SFFT)
(VARS (ARE (ARRAY 1025 (QUOTE POINTER)
0.0))
(AIM (ARRAY 1025 (QUOTE POINTER)
0.0)))
(MACROS IEXPT)))
(DEFINEQ
(SFFT
(LAMBDA (AREAL AIMAG) (* JonL "22-FEB-83 05:25")
(* Fast Fourier Transform AREAL = real part AIMAG =
imaginary part)
(PROG (AR AI PI I J K M N LE LE1 IP NV2 NM1 UR UI WR WI TR TI)
(SETQ AR AREAL) (* Initialize)
(SETQ AI AIMAG)
(SETQ PI 3.141593)
(SETQ N (ARRAYSIZE AR))
(add N -1)
(SETQ NV2 (LRSH N 1))
(SETQ NM1 (SUB1 N))
(SETQ M 0)
(SETQ I 1)
L1 (until (NOT (ILESSP I N))
do (* Compute M = log (N))
(add M 1)
(add I I))
(if (NOT (IEQP N (IEXPT 2 M)))
then (PRINC "Error ... array size not a power of two.")
(READ)
(RETURN (TERPRI)))
(SETQ J 1) (* ;Interchange elements)
(SETQ I 1) (* ;in bit-reversed order)
L3 (repeatuntil (NOT (ILESSP I N))
do (if (ILESSP I J)
then (SETQ TR (ELT AR J))
(SETQ TI (ELT AI J))
(SETA AR J (ELT AR I))
(SETA AI J (ELT AI I))
(SETA AR I TR)
(SETA AI I TI))
(SETQ K NV2)
L6
(until (NOT (ILESSP K J))
do (SETQ J (IDIFFERENCE J K))
(SETQ K (LRSH K 1)))
(SETQ J (IPLUS J K))
(add I 1))
(for L to M
do (* ;Loop thru stages)
(SETQ LE (IEXPT 2 L))
(SETQ LE1 (LRSH LE 1))
(SETQ UR 1.0)
(SETQ UI 0.0)
(SETQ WR (COS (FQUOTIENT PI (FLOAT LE1))))
(SETQ WI (SIN (FQUOTIENT PI (FLOAT LE1))))
(for J to LE1
do (* ;Loop thru butterflies)
(for I from J by LE until (IGREATERP I N)
do (* ;Do a butterfly)
(SETQ IP (IPLUS I LE1))
(SETQ TR (FDIFFERENCE (FTIMES (ELT AR IP)
UR)
(FTIMES (ELT AI IP)
UI)))
(SETQ TI (FPLUS (FTIMES (ELT AR IP)
UI)
(FTIMES (ELT AI IP)
UR)))
(SETA AR IP (FDIFFERENCE (ELT AR I)
TR))
(SETA AI IP (FDIFFERENCE (ELT AI I)
TI))
(SETA AR I (FPLUS (ELT AR I)
TR))
(SETA AI I (FPLUS (ELT AI I)
TI)))
(SETQ TR (FDIFFERENCE (FTIMES UR WR)
(FTIMES UI WI)))
(SETQ TI (FPLUS (FTIMES UR WI)
(FTIMES UI WR)))
(SETQ UR TR)
(SETQ UI TI)))
(RETURN T))))
)
(RPAQ ARE (ARRAY 1025 (QUOTE POINTER)
0.0))
(RPAQ AIM (ARRAY 1025 (QUOTE POINTER)
0.0))
(DECLARE: EVAL@COMPILE
(PUTPROPS IEXPT MACRO (X
(PROG ((N (CAR (CONSTANTEXPRESSIONP (CAR X))))
(E (CADR X)))
(RETURN (if (AND (FIXP N)
(POWEROFTWOP N))
then (if (NEQ 2 N)
then (SETQ E (BQUOTE (ITIMES , (SUB1 (INTEGERLENGTH N))
,E))))
(BQUOTE (MASK.1'S , E 1))
else (BQUOTE (EXPT (IPLUS 0 , (CAR X))
(IPLUS 0 , (CADR X)))))))))
)
(PUTPROPS SFFT COPYRIGHT ("JonL" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (416 3135 (SFFT 426 . 3133)))))
STOP
;;; Time (SFFT)
(FILECREATED " 5-JUL-83 12:48:46" {PHYLUM}<GABRIEL>STAK.;1 887
changes to: (VARS STAKCOMS)
(FNS TAK STAK))
(PRETTYCOMPRINT STAKCOMS)
(RPAQQ STAKCOMS ((FNS TAK STAK)
(SPECVARS X Y Z)))
(DEFINEQ
(TAK
(LAMBDA (X Y Z) (* JonL " 5-JUL-83 12:45")
(STAK)))
(STAK
(LAMBDA NIL (* JonL " 5-JUL-83 12:45")
(COND
((NOT (ILESSP Y X))
Z)
(T (PROG ((X (PROG ((X (SUB1 X))
(Y Y)
(Z Z))
(RETURN (STAK))))
(Y (PROG ((X (SUB1 Y))
(Y Z)
(Z X))
(RETURN (STAK))))
(Z (PROG ((X (SUB1 Z))
(Y X)
(Z Y))
(RETURN (STAK)))))
(RETURN (STAK)))))))
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(SPECVARS X Y Z)
)
(PUTPROPS STAK COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (215 778 (TAK 225 . 342) (STAK 344 . 776)))))
STOP
;;; Time (TAK 18 12 6)
(FILECREATED "14-FEB-83 10:11:44" {PHYLUM}<GABRIEL>TAK.;2 453
changes to: (VARS TAKCOMS)
(FNS TAK)
previous date: "14-FEB-83 09:45:21" {DSK}TAK.;1)
(PRETTYCOMPRINT TAKCOMS)
(RPAQQ TAKCOMS ((FNS TAK)))
(DEFINEQ
(TAK
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK (TAK (SUB1 X)
Y Z)
(TAK (SUB1 Y)
Z X)
(TAK (SUB1 Z)
X Y])
)
(DECLARE: DONTCOPY
(FILEMAP (NIL (236 431 (TAK 246 . 429)))))
STOP
;;; Time (TAK 18 12 6) and (tak 1018 1012 1006)
(FILECREATED "14-FEB-83 11:45:11" {PHYLUM}<GABRIEL>TAKL.;1 1042
changes to: (VARS TAKLCOMS 18L 12L 6L)
(FNS LISTN TAKL SHORTERP))
(PRETTYCOMPRINT TAKLCOMS)
(RPAQQ TAKLCOMS ((FNS LISTN TAKL SHORTERP)
(VARS 18L 12L 6L)))
(DEFINEQ
(LISTN
[LAMBDA (N) (* lmm "28-APR-82 21:41")
(COND
((ZEROP N)
NIL)
(T (CONS N (LISTN (SUB1 N])
(TAKL
[LAMBDA (X Y Z) (* lmm "28-APR-82 21:39")
(COND
((NOT (SHORTERP Y X))
Z)
(T (TAKL (TAKL (CDR X)
Y Z)
(TAKL (CDR Y)
Z X)
(TAKL (CDR Z)
X Y])
(SHORTERP
[LAMBDA (X Y) (* lmm "28-APR-82 21:38")
(AND Y (OR (NULL X)
(SHORTERP (CDR X)
(CDR Y])
)
(RPAQQ 18L (18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1))
(RPAQQ 12L (12 11 10 9 8 7 6 5 4 3 2 1))
(RPAQQ 6L (6 5 4 3 2 1))
(DECLARE: DONTCOPY
(FILEMAP (NIL (249 880 (LISTN 259 . 431) (TAKL 433 . 705) (SHORTERP 707 . 878)))))
STOP
;;; Time (TAKL 18L 12L 6L)
(FILECREATED "14-FEB-83 10:52:35" {PHYLUM}<GABRIEL>TAKR.;2 21317
changes to: (FNS TAKR TAK0 TAK1 TAK2 TAK3 TAK4 TAK5 TAK6 TAK7 TAK8 TAK9 TAK10 TAK11 TAK12
TAK13 TAK14 TAK15 TAK16 TAK17 TAK18 TAK19 TAK20 TAK21 TAK22 TAK23 TAK24 TAK25
TAK26 TAK27 TAK28 TAK29 TAK30 TAK31 TAK32 TAK33 TAK34 TAK35 TAK36 TAK37 TAK38
TAK39 TAK40 TAK41 TAK42 TAK43 TAK44 TAK45 TAK46 TAK47 TAK48 TAK49 TAK50 TAK51
TAK52 TAK53 TAK54 TAK55 TAK56 TAK57 TAK58 TAK59 TAK60 TAK61 TAK62 TAK63 TAK64
TAK65 TAK66 TAK67 TAK68 TAK69 TAK70 TAK71 TAK72 TAK73 TAK74 TAK75 TAK76 TAK77
TAK78 TAK79 TAK80 TAK81 TAK82 TAK83 TAK84 TAK85 TAK86 TAK87 TAK88 TAK89 TAK90
TAK91 TAK92 TAK93 TAK94 TAK95 TAK96 TAK97 TAK98 TAK99)
(VARS TAKRCOMS)
previous date: "14-FEB-83 10:22:33" {PHYLUM}<GABRIEL>TAKR.;1)
(PRETTYCOMPRINT TAKRCOMS)
(RPAQQ TAKRCOMS ((FNS TAKR TAK0 TAK1 TAK2 TAK3 TAK4 TAK5 TAK6 TAK7 TAK8 TAK9 TAK10 TAK11 TAK12 TAK13
TAK14 TAK15 TAK16 TAK17 TAK18 TAK19 TAK20 TAK21 TAK22 TAK23 TAK24 TAK25 TAK26
TAK27 TAK28 TAK29 TAK30 TAK31 TAK32 TAK33 TAK34 TAK35 TAK36 TAK37 TAK38 TAK39
TAK40 TAK41 TAK42 TAK43 TAK44 TAK45 TAK46 TAK47 TAK48 TAK49 TAK50 TAK51 TAK52
TAK53 TAK54 TAK55 TAK56 TAK57 TAK58 TAK59 TAK60 TAK61 TAK62 TAK63 TAK64 TAK65
TAK66 TAK67 TAK68 TAK69 TAK70 TAK71 TAK72 TAK73 TAK74 TAK75 TAK76 TAK77 TAK78
TAK79 TAK80 TAK81 TAK82 TAK83 TAK84 TAK85 TAK86 TAK87 TAK88 TAK89 TAK90 TAK91
TAK92 TAK93 TAK94 TAK95 TAK96 TAK97 TAK98 TAK99)))
(DEFINEQ
(TAKR
[LAMBDA NIL
(TAK0 18 12 6])
(TAK0
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK1 (TAK37 (SUB1 X)
Y Z)
(TAK11 (SUB1 Y)
Z X)
(TAK17 (SUB1 Z)
X Y])
(TAK1
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK2 (TAK74 (SUB1 X)
Y Z)
(TAK22 (SUB1 Y)
Z X)
(TAK34 (SUB1 Z)
X Y])
(TAK2
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK3 (TAK11 (SUB1 X)
Y Z)
(TAK33 (SUB1 Y)
Z X)
(TAK51 (SUB1 Z)
X Y])
(TAK3
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK4 (TAK48 (SUB1 X)
Y Z)
(TAK44 (SUB1 Y)
Z X)
(TAK68 (SUB1 Z)
X Y])
(TAK4
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK5 (TAK85 (SUB1 X)
Y Z)
(TAK55 (SUB1 Y)
Z X)
(TAK85 (SUB1 Z)
X Y])
(TAK5
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK6 (TAK22 (SUB1 X)
Y Z)
(TAK66 (SUB1 Y)
Z X)
(TAK2 (SUB1 Z)
X Y])
(TAK6
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK7 (TAK59 (SUB1 X)
Y Z)
(TAK77 (SUB1 Y)
Z X)
(TAK19 (SUB1 Z)
X Y])
(TAK7
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK8 (TAK96 (SUB1 X)
Y Z)
(TAK88 (SUB1 Y)
Z X)
(TAK36 (SUB1 Z)
X Y])
(TAK8
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK9 (TAK33 (SUB1 X)
Y Z)
(TAK99 (SUB1 Y)
Z X)
(TAK53 (SUB1 Z)
X Y])
(TAK9
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK10 (TAK70 (SUB1 X)
Y Z)
(TAK10 (SUB1 Y)
Z X)
(TAK70 (SUB1 Z)
X Y])
(TAK10
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK11 (TAK7 (SUB1 X)
Y Z)
(TAK21 (SUB1 Y)
Z X)
(TAK87 (SUB1 Z)
X Y])
(TAK11
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK12 (TAK44 (SUB1 X)
Y Z)
(TAK32 (SUB1 Y)
Z X)
(TAK4 (SUB1 Z)
X Y])
(TAK12
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK13 (TAK81 (SUB1 X)
Y Z)
(TAK43 (SUB1 Y)
Z X)
(TAK21 (SUB1 Z)
X Y])
(TAK13
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK14 (TAK18 (SUB1 X)
Y Z)
(TAK54 (SUB1 Y)
Z X)
(TAK38 (SUB1 Z)
X Y])
(TAK14
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK15 (TAK55 (SUB1 X)
Y Z)
(TAK65 (SUB1 Y)
Z X)
(TAK55 (SUB1 Z)
X Y])
(TAK15
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK16 (TAK92 (SUB1 X)
Y Z)
(TAK76 (SUB1 Y)
Z X)
(TAK72 (SUB1 Z)
X Y])
(TAK16
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK17 (TAK29 (SUB1 X)
Y Z)
(TAK87 (SUB1 Y)
Z X)
(TAK89 (SUB1 Z)
X Y])
(TAK17
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK18 (TAK66 (SUB1 X)
Y Z)
(TAK98 (SUB1 Y)
Z X)
(TAK6 (SUB1 Z)
X Y])
(TAK18
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK19 (TAK3 (SUB1 X)
Y Z)
(TAK9 (SUB1 Y)
Z X)
(TAK23 (SUB1 Z)
X Y])
(TAK19
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK20 (TAK40 (SUB1 X)
Y Z)
(TAK20 (SUB1 Y)
Z X)
(TAK40 (SUB1 Z)
X Y])
(TAK20
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK21 (TAK77 (SUB1 X)
Y Z)
(TAK31 (SUB1 Y)
Z X)
(TAK57 (SUB1 Z)
X Y])
(TAK21
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK22 (TAK14 (SUB1 X)
Y Z)
(TAK42 (SUB1 Y)
Z X)
(TAK74 (SUB1 Z)
X Y])
(TAK22
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK23 (TAK51 (SUB1 X)
Y Z)
(TAK53 (SUB1 Y)
Z X)
(TAK91 (SUB1 Z)
X Y])
(TAK23
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK24 (TAK88 (SUB1 X)
Y Z)
(TAK64 (SUB1 Y)
Z X)
(TAK8 (SUB1 Z)
X Y])
(TAK24
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK25 (TAK25 (SUB1 X)
Y Z)
(TAK75 (SUB1 Y)
Z X)
(TAK25 (SUB1 Z)
X Y])
(TAK25
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK26 (TAK62 (SUB1 X)
Y Z)
(TAK86 (SUB1 Y)
Z X)
(TAK42 (SUB1 Z)
X Y])
(TAK26
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK27 (TAK99 (SUB1 X)
Y Z)
(TAK97 (SUB1 Y)
Z X)
(TAK59 (SUB1 Z)
X Y])
(TAK27
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK28 (TAK36 (SUB1 X)
Y Z)
(TAK8 (SUB1 Y)
Z X)
(TAK76 (SUB1 Z)
X Y])
(TAK28
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK29 (TAK73 (SUB1 X)
Y Z)
(TAK19 (SUB1 Y)
Z X)
(TAK93 (SUB1 Z)
X Y])
(TAK29
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK30 (TAK10 (SUB1 X)
Y Z)
(TAK30 (SUB1 Y)
Z X)
(TAK10 (SUB1 Z)
X Y])
(TAK30
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK31 (TAK47 (SUB1 X)
Y Z)
(TAK41 (SUB1 Y)
Z X)
(TAK27 (SUB1 Z)
X Y])
(TAK31
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK32 (TAK84 (SUB1 X)
Y Z)
(TAK52 (SUB1 Y)
Z X)
(TAK44 (SUB1 Z)
X Y])
(TAK32
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK33 (TAK21 (SUB1 X)
Y Z)
(TAK63 (SUB1 Y)
Z X)
(TAK61 (SUB1 Z)
X Y])
(TAK33
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK34 (TAK58 (SUB1 X)
Y Z)
(TAK74 (SUB1 Y)
Z X)
(TAK78 (SUB1 Z)
X Y])
(TAK34
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK35 (TAK95 (SUB1 X)
Y Z)
(TAK85 (SUB1 Y)
Z X)
(TAK95 (SUB1 Z)
X Y])
(TAK35
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK36 (TAK32 (SUB1 X)
Y Z)
(TAK96 (SUB1 Y)
Z X)
(TAK12 (SUB1 Z)
X Y])
(TAK36
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK37 (TAK69 (SUB1 X)
Y Z)
(TAK7 (SUB1 Y)
Z X)
(TAK29 (SUB1 Z)
X Y])
(TAK37
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK38 (TAK6 (SUB1 X)
Y Z)
(TAK18 (SUB1 Y)
Z X)
(TAK46 (SUB1 Z)
X Y])
(TAK38
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK39 (TAK43 (SUB1 X)
Y Z)
(TAK29 (SUB1 Y)
Z X)
(TAK63 (SUB1 Z)
X Y])
(TAK39
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK40 (TAK80 (SUB1 X)
Y Z)
(TAK40 (SUB1 Y)
Z X)
(TAK80 (SUB1 Z)
X Y])
(TAK40
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK41 (TAK17 (SUB1 X)
Y Z)
(TAK51 (SUB1 Y)
Z X)
(TAK97 (SUB1 Z)
X Y])
(TAK41
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK42 (TAK54 (SUB1 X)
Y Z)
(TAK62 (SUB1 Y)
Z X)
(TAK14 (SUB1 Z)
X Y])
(TAK42
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK43 (TAK91 (SUB1 X)
Y Z)
(TAK73 (SUB1 Y)
Z X)
(TAK31 (SUB1 Z)
X Y])
(TAK43
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK44 (TAK28 (SUB1 X)
Y Z)
(TAK84 (SUB1 Y)
Z X)
(TAK48 (SUB1 Z)
X Y])
(TAK44
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK45 (TAK65 (SUB1 X)
Y Z)
(TAK95 (SUB1 Y)
Z X)
(TAK65 (SUB1 Z)
X Y])
(TAK45
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK46 (TAK2 (SUB1 X)
Y Z)
(TAK6 (SUB1 Y)
Z X)
(TAK82 (SUB1 Z)
X Y])
(TAK46
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK47 (TAK39 (SUB1 X)
Y Z)
(TAK17 (SUB1 Y)
Z X)
(TAK99 (SUB1 Z)
X Y])
(TAK47
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK48 (TAK76 (SUB1 X)
Y Z)
(TAK28 (SUB1 Y)
Z X)
(TAK16 (SUB1 Z)
X Y])
(TAK48
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK49 (TAK13 (SUB1 X)
Y Z)
(TAK39 (SUB1 Y)
Z X)
(TAK33 (SUB1 Z)
X Y])
(TAK49
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK50 (TAK50 (SUB1 X)
Y Z)
(TAK50 (SUB1 Y)
Z X)
(TAK50 (SUB1 Z)
X Y])
(TAK50
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK51 (TAK87 (SUB1 X)
Y Z)
(TAK61 (SUB1 Y)
Z X)
(TAK67 (SUB1 Z)
X Y])
(TAK51
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK52 (TAK24 (SUB1 X)
Y Z)
(TAK72 (SUB1 Y)
Z X)
(TAK84 (SUB1 Z)
X Y])
(TAK52
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK53 (TAK61 (SUB1 X)
Y Z)
(TAK83 (SUB1 Y)
Z X)
(TAK1 (SUB1 Z)
X Y])
(TAK53
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK54 (TAK98 (SUB1 X)
Y Z)
(TAK94 (SUB1 Y)
Z X)
(TAK18 (SUB1 Z)
X Y])
(TAK54
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK55 (TAK35 (SUB1 X)
Y Z)
(TAK5 (SUB1 Y)
Z X)
(TAK35 (SUB1 Z)
X Y])
(TAK55
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK56 (TAK72 (SUB1 X)
Y Z)
(TAK16 (SUB1 Y)
Z X)
(TAK52 (SUB1 Z)
X Y])
(TAK56
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK57 (TAK9 (SUB1 X)
Y Z)
(TAK27 (SUB1 Y)
Z X)
(TAK69 (SUB1 Z)
X Y])
(TAK57
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK58 (TAK46 (SUB1 X)
Y Z)
(TAK38 (SUB1 Y)
Z X)
(TAK86 (SUB1 Z)
X Y])
(TAK58
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK59 (TAK83 (SUB1 X)
Y Z)
(TAK49 (SUB1 Y)
Z X)
(TAK3 (SUB1 Z)
X Y])
(TAK59
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK60 (TAK20 (SUB1 X)
Y Z)
(TAK60 (SUB1 Y)
Z X)
(TAK20 (SUB1 Z)
X Y])
(TAK60
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK61 (TAK57 (SUB1 X)
Y Z)
(TAK71 (SUB1 Y)
Z X)
(TAK37 (SUB1 Z)
X Y])
(TAK61
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK62 (TAK94 (SUB1 X)
Y Z)
(TAK82 (SUB1 Y)
Z X)
(TAK54 (SUB1 Z)
X Y])
(TAK62
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK63 (TAK31 (SUB1 X)
Y Z)
(TAK93 (SUB1 Y)
Z X)
(TAK71 (SUB1 Z)
X Y])
(TAK63
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK64 (TAK68 (SUB1 X)
Y Z)
(TAK4 (SUB1 Y)
Z X)
(TAK88 (SUB1 Z)
X Y])
(TAK64
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK65 (TAK5 (SUB1 X)
Y Z)
(TAK15 (SUB1 Y)
Z X)
(TAK5 (SUB1 Z)
X Y])
(TAK65
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK66 (TAK42 (SUB1 X)
Y Z)
(TAK26 (SUB1 Y)
Z X)
(TAK22 (SUB1 Z)
X Y])
(TAK66
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK67 (TAK79 (SUB1 X)
Y Z)
(TAK37 (SUB1 Y)
Z X)
(TAK39 (SUB1 Z)
X Y])
(TAK67
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK68 (TAK16 (SUB1 X)
Y Z)
(TAK48 (SUB1 Y)
Z X)
(TAK56 (SUB1 Z)
X Y])
(TAK68
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK69 (TAK53 (SUB1 X)
Y Z)
(TAK59 (SUB1 Y)
Z X)
(TAK73 (SUB1 Z)
X Y])
(TAK69
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK70 (TAK90 (SUB1 X)
Y Z)
(TAK70 (SUB1 Y)
Z X)
(TAK90 (SUB1 Z)
X Y])
(TAK70
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK71 (TAK27 (SUB1 X)
Y Z)
(TAK81 (SUB1 Y)
Z X)
(TAK7 (SUB1 Z)
X Y])
(TAK71
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK72 (TAK64 (SUB1 X)
Y Z)
(TAK92 (SUB1 Y)
Z X)
(TAK24 (SUB1 Z)
X Y])
(TAK72
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK73 (TAK1 (SUB1 X)
Y Z)
(TAK3 (SUB1 Y)
Z X)
(TAK41 (SUB1 Z)
X Y])
(TAK73
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK74 (TAK38 (SUB1 X)
Y Z)
(TAK14 (SUB1 Y)
Z X)
(TAK58 (SUB1 Z)
X Y])
(TAK74
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK75 (TAK75 (SUB1 X)
Y Z)
(TAK25 (SUB1 Y)
Z X)
(TAK75 (SUB1 Z)
X Y])
(TAK75
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK76 (TAK12 (SUB1 X)
Y Z)
(TAK36 (SUB1 Y)
Z X)
(TAK92 (SUB1 Z)
X Y])
(TAK76
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK77 (TAK49 (SUB1 X)
Y Z)
(TAK47 (SUB1 Y)
Z X)
(TAK9 (SUB1 Z)
X Y])
(TAK77
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK78 (TAK86 (SUB1 X)
Y Z)
(TAK58 (SUB1 Y)
Z X)
(TAK26 (SUB1 Z)
X Y])
(TAK78
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK79 (TAK23 (SUB1 X)
Y Z)
(TAK69 (SUB1 Y)
Z X)
(TAK43 (SUB1 Z)
X Y])
(TAK79
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK80 (TAK60 (SUB1 X)
Y Z)
(TAK80 (SUB1 Y)
Z X)
(TAK60 (SUB1 Z)
X Y])
(TAK80
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK81 (TAK97 (SUB1 X)
Y Z)
(TAK91 (SUB1 Y)
Z X)
(TAK77 (SUB1 Z)
X Y])
(TAK81
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK82 (TAK34 (SUB1 X)
Y Z)
(TAK2 (SUB1 Y)
Z X)
(TAK94 (SUB1 Z)
X Y])
(TAK82
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK83 (TAK71 (SUB1 X)
Y Z)
(TAK13 (SUB1 Y)
Z X)
(TAK11 (SUB1 Z)
X Y])
(TAK83
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK84 (TAK8 (SUB1 X)
Y Z)
(TAK24 (SUB1 Y)
Z X)
(TAK28 (SUB1 Z)
X Y])
(TAK84
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK85 (TAK45 (SUB1 X)
Y Z)
(TAK35 (SUB1 Y)
Z X)
(TAK45 (SUB1 Z)
X Y])
(TAK85
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK86 (TAK82 (SUB1 X)
Y Z)
(TAK46 (SUB1 Y)
Z X)
(TAK62 (SUB1 Z)
X Y])
(TAK86
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK87 (TAK19 (SUB1 X)
Y Z)
(TAK57 (SUB1 Y)
Z X)
(TAK79 (SUB1 Z)
X Y])
(TAK87
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK88 (TAK56 (SUB1 X)
Y Z)
(TAK68 (SUB1 Y)
Z X)
(TAK96 (SUB1 Z)
X Y])
(TAK88
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK89 (TAK93 (SUB1 X)
Y Z)
(TAK79 (SUB1 Y)
Z X)
(TAK13 (SUB1 Z)
X Y])
(TAK89
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK90 (TAK30 (SUB1 X)
Y Z)
(TAK90 (SUB1 Y)
Z X)
(TAK30 (SUB1 Z)
X Y])
(TAK90
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK91 (TAK67 (SUB1 X)
Y Z)
(TAK1 (SUB1 Y)
Z X)
(TAK47 (SUB1 Z)
X Y])
(TAK91
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK92 (TAK4 (SUB1 X)
Y Z)
(TAK12 (SUB1 Y)
Z X)
(TAK64 (SUB1 Z)
X Y])
(TAK92
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK93 (TAK41 (SUB1 X)
Y Z)
(TAK23 (SUB1 Y)
Z X)
(TAK81 (SUB1 Z)
X Y])
(TAK93
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK94 (TAK78 (SUB1 X)
Y Z)
(TAK34 (SUB1 Y)
Z X)
(TAK98 (SUB1 Z)
X Y])
(TAK94
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK95 (TAK15 (SUB1 X)
Y Z)
(TAK45 (SUB1 Y)
Z X)
(TAK15 (SUB1 Z)
X Y])
(TAK95
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK96 (TAK52 (SUB1 X)
Y Z)
(TAK56 (SUB1 Y)
Z X)
(TAK32 (SUB1 Z)
X Y])
(TAK96
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK97 (TAK89 (SUB1 X)
Y Z)
(TAK67 (SUB1 Y)
Z X)
(TAK49 (SUB1 Z)
X Y])
(TAK97
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK98 (TAK26 (SUB1 X)
Y Z)
(TAK78 (SUB1 Y)
Z X)
(TAK66 (SUB1 Z)
X Y])
(TAK98
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK99 (TAK63 (SUB1 X)
Y Z)
(TAK89 (SUB1 Y)
Z X)
(TAK83 (SUB1 Z)
X Y])
(TAK99
[LAMBDA (X Y Z)
(COND
((NOT (ILESSP Y X))
Z)
(T (TAK0 (TAK0 (SUB1 X)
Y Z)
(TAK0 (SUB1 Y)
Z X)
(TAK0 (SUB1 Z)
X Y])
)
(DECLARE: DONTCOPY
(FILEMAP (NIL (1526 21295 (TAKR 1536 . 1583) (TAK0 1585 . 1787) (TAK1 1789 . 1991) (TAK2 1993 . 2195)
(TAK3 2197 . 2399) (TAK4 2401 . 2603) (TAK5 2605 . 2805) (TAK6 2807 . 3009) (TAK7 3011 . 3213) (TAK8
3215 . 3417) (TAK9 3419 . 3613) (TAK10 3615 . 3808) (TAK11 3810 . 4003) (TAK12 4005 . 4200) (TAK13
4202 . 4397) (TAK14 4399 . 4594) (TAK15 4596 . 4791) (TAK16 4793 . 4988) (TAK17 4990 . 5183) (TAK18
5185 . 5376) (TAK19 5378 . 5573) (TAK20 5575 . 5770) (TAK21 5772 . 5967) (TAK22 5969 . 6164) (TAK23
6166 . 6359) (TAK24 6361 . 6556) (TAK25 6558 . 6753) (TAK26 6755 . 6950) (TAK27 6952 . 7145) (TAK28
7147 . 7342) (TAK29 7344 . 7539) (TAK30 7541 . 7736) (TAK31 7738 . 7933) (TAK32 7935 . 8130) (TAK33
8132 . 8327) (TAK34 8329 . 8524) (TAK35 8526 . 8721) (TAK36 8723 . 8916) (TAK37 8918 . 9111) (TAK38
9113 . 9308) (TAK39 9310 . 9505) (TAK40 9507 . 9702) (TAK41 9704 . 9899) (TAK42 9901 . 10096) (TAK43
10098 . 10293) (TAK44 10295 . 10490) (TAK45 10492 . 10683) (TAK46 10685 . 10880) (TAK47 10882 . 11077)
(TAK48 11079 . 11274) (TAK49 11276 . 11471) (TAK50 11473 . 11668) (TAK51 11670 . 11865) (TAK52 11867
. 12060) (TAK53 12062 . 12257) (TAK54 12259 . 12452) (TAK55 12454 . 12649) (TAK56 12651 . 12844) (
TAK57 12846 . 13041) (TAK58 13043 . 13236) (TAK59 13238 . 13433) (TAK60 13435 . 13630) (TAK61 13632 .
13827) (TAK62 13829 . 14024) (TAK63 14026 . 14219) (TAK64 14221 . 14412) (TAK65 14414 . 14609) (TAK66
14611 . 14806) (TAK67 14808 . 15003) (TAK68 15005 . 15200) (TAK69 15202 . 15397) (TAK70 15399 . 15592)
(TAK71 15594 . 15789) (TAK72 15791 . 15982) (TAK73 15984 . 16179) (TAK74 16181 . 16376) (TAK75 16378
. 16573) (TAK76 16575 . 16768) (TAK77 16770 . 16965) (TAK78 16967 . 17162) (TAK79 17164 . 17359) (
TAK80 17361 . 17556) (TAK81 17558 . 17751) (TAK82 17753 . 17948) (TAK83 17950 . 18143) (TAK84 18145 .
18340) (TAK85 18342 . 18537) (TAK86 18539 . 18734) (TAK87 18736 . 18931) (TAK88 18933 . 19128) (TAK89
19130 . 19325) (TAK90 19327 . 19520) (TAK91 19522 . 19715) (TAK92 19717 . 19912) (TAK93 19914 . 20109)
(TAK94 20111 . 20306) (TAK95 20308 . 20503) (TAK96 20505 . 20700) (TAK97 20702 . 20897) (TAK98 20899
. 21094) (TAK99 21096 . 21293)))))
STOP
;;; Time (TAKR)
(FILECREATED " 5-JUL-83 23:34:54" {PHYLUM}<GABRIEL>TPRINT.;4 2049
changes to: (FNS INIT TIMIT)
(VARS TPRINTCOMS)
previous date: " 5-JUL-83 14:56:25" {PHYLUM}<GABRIEL>TPRINT.;1)
(PRETTYCOMPRINT TPRINTCOMS)
(RPAQQ TPRINTCOMS ((FNS INIT INIT1 TPRINT TIMIT)
(VARS TESTATOMS (TESTPATTERN (INIT 6 6 TESTATOMS)))
(GLOBALVARS TESTATOMS TESTPATTERN BIGWINDOW)))
(DEFINEQ
(INIT
(LAMBDA (M N ATOMS) (* JonL " 5-JUL-83 23:34")
(DECLARE (GLOBALVARS BIGWINDOW))
(PROG ((ATOMS (SUBST NIL NIL ATOMS)))
(SETQ BIGWINDOW
(CREATEW (create REGION
LEFT ← 150
BOTTOM ← 50
WIDTH ← 800
HEIGHT ← 700)))
(DSPSCROLL T BIGWINDOW)
(DSPYPOSITION 0 BIGWINDOW)
(bind (A1 ← ATOMS) do (pop A1) until (NULL (CDR A1)) finally (RPLACD A1 ATOMS))
(RETURN (INIT1 M N ATOMS)))))
(INIT1
(LAMBDA (M N ATOMS) (* JonL " 5-JUL-83 13:26")
(COND
((ZEROP M)
(pop ATOMS))
(T (bind A for I from N by -2 until (ILESSP I 1)
do (push A (pop ATOMS))
(push A (INIT1 (SUB1 M)
N ATOMS))
finally (RETURN A))))))
(TPRINT
(LAMBDA (WINDOW) (* JonL " 5-JUL-83 14:55")
(PRINT TESTPATTERN WINDOW)
T))
(TIMIT
(LAMBDA NIL
(DECLARE (GLOBALVARS BIGWINDOW)) (* JonL " 5-JUL-83 23:29")
(TOTOPW W)
(TIMEALL (TPRINT W))))
)
(RPAQQ TESTATOMS (ABCDEF12 CDEFGH23 EFGHIJ34 GHIJKL45 IJKLMN56 KLMNOP67 MNOPQR78 OPRST89 QRSTUV90
STUVWX01 UVWXYZ12 WXYZAB23 XYZABC34 123456AB 234567BC 345678CD 456789DE
567890EF 678901FG 789012GH 890123HI))
(RPAQ TESTPATTERN (INIT 6 6 TESTATOMS))
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS TESTATOMS TESTPATTERN BIGWINDOW)
)
(PUTPROPS TPRINT COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (397 1629 (INIT 407 . 958) (INIT1 960 . 1315) (TPRINT 1317 . 1459) (TIMIT 1461 . 1627)))
))
STOP
;;; Time (TPRINT) [on a 10''x10'' window]
(FILECREATED " 5-JUL-83 20:51:46" {PHYLUM}<GABRIEL>TRAVERSE.;8 5616
changes to: (VARS TRAVERSECOMS)
(PROPS (ROOT GLOBALVAR))
(FNS TRAVERSE TADD CREATE-STRUCTURE TIMIT TRAVERS SNB SEED RANDOM TREMOVE TSELECT
FIND-ROOT)
(RECORDS NODE)
previous date: " 5-JUL-83 14:06:30" {PHYLUM}<GABRIEL>TRAVERSE.;2)
(PRETTYCOMPRINT TRAVERSECOMS)
(RPAQQ TRAVERSECOMS ((RECORDS NODE)
(FNS SNB SEED RANDOM TREMOVE TSELECT TADD CREATE-STRUCTURE FIND-ROOT TRAVERS
TRAVERSE TIMIT)
(VARS (SN 0)
(RAND 21.0)
(COUNT 0)
(MARKER NIL))
(GLOBALVARS RAND SN MARKER ROOT)
(PROP GLOBALVAR ROOT)
(SPECVARS COUNT)))
[DECLARE: EVAL@COMPILE
(DATATYPE NODE ((PARENTS POINTER)
(SONS POINTER)
(SN WORD)
(ENTRY1 FLAG)
(ENTRY2 FLAG)
(ENTRY3 FLAG)
(ENTRY4 FLAG)
(ENTRY5 FLAG)
(ENTRY6 FLAG)
(MARK FLAG))
SN ←(SNB))
]
(/DECLAREDATATYPE (QUOTE NODE)
(QUOTE (POINTER POINTER WORD FLAG FLAG FLAG FLAG FLAG FLAG FLAG)))
(DEFINEQ
(SNB
(LAMBDA NIL (* JonL " 5-JUL-83 13:21")
(SETQ SN (ADD1 SN))))
(SEED
(LAMBDA NIL (* JonL " 5-JUL-83 13:22")
(SETQ RAND 21)))
(RANDOM
(LAMBDA NIL (* JonL " 5-JUL-83 13:25")
(SETQ RAND (IMOD (ITIMES RAND 17.0)
251))))
(TREMOVE
(LAMBDA (N Q) (* JonL " 5-JUL-83 13:37")
(COND
((EQ (CDR (CAR Q))
(CAR Q))
(PROG2 NIL (CAAR Q)
(RPLACA Q NIL)))
((ZEROP N)
(PROG2 NIL (CAAR Q)
(bind (P ←(CAR Q)) until (EQ (CDR P)
(CAR Q))
do (pop P) finally (RETURN (RPLACA Q (RPLACD P (CDR (CAR Q))))))))
(T (for N (Q ←(CAR Q))
(P ←(CDR (CAR Q))) from N by -1 until (ZEROP N)
do (pop Q)
(pop P)
finally (RETURN (PROG2 NIL (CAR Q)
(RPLACD Q P))))))))
(TSELECT
(LAMBDA (N Q) (* JonL " 5-JUL-83 13:37")
(for N (Q ←(CAR Q)) from N by -1 until (ZEROP N) do (pop Q) finally (RETURN (CAR Q)))))
(TADD
(LAMBDA (A Q) (* JonL " 5-JUL-83 15:50")
(COND
((NULL Q)
(PROG ((X (LIST A)))
(RPLACD X X)
(RETURN (LIST X))))
((NULL (CAR Q))
(PROG ((X (LIST A)))
(RPLACD X X)
(RETURN (RPLACA Q X))))
(T (RPLACA Q (RPLACD (CAR Q)
(CONS A (CDR (CAR Q)))))))))
(CREATE-STRUCTURE
(LAMBDA (N) (* JonL " 5-JUL-83 15:51")
(PROG ((A (LIST (create NODE))))
(RETURN (for M (P ← A) from (SUB1 N) by -1 until (ZEROP M) do (push A (create NODE))
finally (PROGN (SETQ A (LIST (RPLACD P A)))
(RETURN (bind (UNUSED ← A)
(USED ←(TADD (TREMOVE 0 A)
NIL))
X Y until (NULL (CAR UNUSED))
do (SETQ X (TREMOVE (IMOD (RANDOM)
N)
UNUSED))
(SETQ Y (TSELECT (IMOD (RANDOM)
N)
USED))
(TADD X USED)
(push (fetch SONS of Y)
X)
(push (fetch PARENTS of X)
Y)
finally (RETURN (FIND-ROOT (TSELECT 0 USED)
N))))))))))
(FIND-ROOT
(LAMBDA (NODE N) (* JonL " 5-JUL-83 13:58")
(for N from N by -1 until (ZEROP N) do (COND
((NULL (fetch PARENTS of NODE))
(RETURN NODE))
(T (SETQ NODE (CAR (fetch PARENTS of NODE)))))
finally (RETURN NODE))))
(TRAVERS
(LAMBDA (NODE MARK) (* JonL " 5-JUL-83 15:21")
(COND
((EQ (fetch MARK of NODE)
MARK)
NIL)
(T (replace MARK of NODE with MARK)
(SETQ COUNT (ADD1 COUNT))
(replace ENTRY1 of NODE with (NOT (fetch ENTRY1 of NODE)))
(replace ENTRY2 of NODE with (NOT (fetch ENTRY2 of NODE)))
(replace ENTRY3 of NODE with (NOT (fetch ENTRY3 of NODE)))
(replace ENTRY4 of NODE with (NOT (fetch ENTRY4 of NODE)))
(replace ENTRY5 of NODE with (NOT (fetch ENTRY5 of NODE)))
(replace ENTRY6 of NODE with (NOT (fetch ENTRY6 of NODE)))
(for SONS on (fetch SONS of NODE) do (TRAVERS (CAR SONS)
MARK))))))
(TRAVERSE
(LAMBDA (ROOT1) (* JonL " 5-JUL-83 15:58")
(PROG ((COUNT 0))
(DECLARE (SPECVARS COUNT)
(GLOBALVARS MARKER))
(TRAVERS ROOT1 (SETQ MARKER (NOT MARKER)))
(RETURN COUNT))))
(TIMIT
(LAMBDA NIL (* JonL " 5-JUL-83 15:54")
(TIMEALL (SETQ ROOT (CREATE-STRUCTURE 100)))
(TIMEALL (FRPTQ 50 (TRAVERSE ROOT)
(TRAVERSE ROOT)
(TRAVERSE ROOT)
(TRAVERSE ROOT)
(TRAVERSE ROOT)))))
)
(RPAQQ SN 0)
(RPAQQ RAND 21.0)
(RPAQQ COUNT 0)
(RPAQQ MARKER NIL)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS RAND SN MARKER ROOT)
)
(PUTPROPS ROOT GLOBALVAR T)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(SPECVARS COUNT)
)
(PUTPROPS TRAVERSE COPYRIGHT (NONE))
(DECLARE: DONTCOPY
(FILEMAP (NIL (1014 5303 (SNB 1024 . 1150) (SEED 1152 . 1274) (RANDOM 1276 . 1434) (TREMOVE 1436 .
2041) (TSELECT 2043 . 2267) (TADD 2269 . 2630) (CREATE-STRUCTURE 2632 . 3507) (FIND-ROOT 3509 . 3862)
(TRAVERS 3864 . 4709) (TRAVERSE 4711 . 4993) (TIMIT 4995 . 5301)))))
STOP
;;; Do TIMIT (which does a TIMEALL)
(FILECREATED "30-MAY-83 15:25:29" {PHYLUM}<GABRIEL>TRIANG.;5 3271
changes to: (VARS TRIANGCOMS)
(FNS LAST-POSITION TRY TEST TRIANG-INIT GOGOGO)
previous date: "30-MAY-83 13:50:41" {PHYLUM}<GABRIEL>TRIANG.;1)
(* Copyright (c) 1983 by Xerox Corporation)
(PRETTYCOMPRINT TRIANGCOMS)
(RPAQQ TRIANGCOMS ((LOCALVARS . T)
(SPECVARS ANSWER FINAL DEEPCOUNTER)
(GLOBALVARS BOARD SEQUENCE A B C)
(FNS GOGOGO LAST-POSITION TRY TEST TRIANG-INIT)
(P (TRIANG-INIT))))
(DECLARE: DOEVAL@COMPILE DONTCOPY
(LOCALVARS . T)
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(SPECVARS ANSWER FINAL DEEPCOUNTER)
)
(DECLARE: DOEVAL@COMPILE DONTCOPY
(ADDTOVAR GLOBALVARS BOARD SEQUENCE A B C)
)
(DEFINEQ
(GOGOGO
(LAMBDA (I) (* JonL "30-MAY-83 13:48")
(PROG ((ANSWER NIL)
(FINAL NIL))
(RETURN (TRY I 1)))))
(LAST-POSITION
(LAMBDA NIL (* JonL "30-MAY-83 15:22")
(OR (find I to 16 suchthat (EQ 1 (8AREF BOARD I)))
0)))
(TRY
(LAMBDA (I DEPTH) (* JonL "30-MAY-83 15:18")
(DECLARE (SPECVARS ANSWER FINAL)
(GLOBALVARS BOARD SEQUENCE A B C))
(COND
((EQ DEPTH 14)
(PROG ((LP (LAST-POSITION)))
(COND
((MEMBER LP FINAL))
(T (push FINAL LP))))
(push ANSWER (CDR (LISTARRAY SEQUENCE)))
T)
((AND (EQ 1 (8AREF BOARD (8AREF A I)))
(EQ 1 (8AREF BOARD (8AREF B I)))
(EQ 0 (8AREF BOARD (8AREF C I))))
(8ASET 0 BOARD (8AREF A I))
(8ASET 0 BOARD (8AREF B I))
(8ASET 1 BOARD (8AREF C I))
(8ASET I SEQUENCE DEPTH)
(bind (DEPTH ←(ADD1 DEPTH)) for J from 0 to 36 until (TRY J DEPTH) do NIL)
(8ASET 1 BOARD (8AREF A I))
(8ASET 1 BOARD (8AREF B I))
(8ASET 0 BOARD (8AREF C I))
NIL))))
(TEST
(LAMBDA NIL (* JonL "30-MAY-83 15:18")
(DECLARE (SPECVARS ANSWER FINAL)
(GLOBALVARS BOARD SEQUENCE A B C))
(TRIANG-INIT)
(PROG ((ANSWER NIL)
(FINAL NIL))
(TRY 22 1)
(RETURN (EQ 775 (LENGTH ANSWER))))))
(TRIANG-INIT
(LAMBDA NIL (* JonL "30-MAY-83 15:00")
(SETQ BOARD (MAKEARRAY 16 (QUOTE ELEMENTTYPE)
(QUOTE BYTE)
(QUOTE INITIALELEMENT)
1))
(ASET 0 BOARD 5)
(SETQ SEQUENCE (MAKEARRAY 14 (QUOTE ELEMENTTYPE)
(QUOTE BYTE)
(QUOTE INITIALELEMENT)
255))
(SETQ A
(MAKEARRAY 37 (QUOTE ELEMENTTYPE)
(QUOTE BYTE)
(QUOTE INITIALCONTENTS)
(QUOTE (1 2 4 3 5 6 1 3 6 2 5 4 11 12 13 7 8 4 4 7 11 8 12 13 6 10 15 9 14 13 13 14
15 9 10 6 0))))
(SETQ B
(MAKEARRAY 37 (QUOTE ELEMENTTYPE)
(QUOTE BYTE)
(QUOTE INITIALCONTENTS)
(QUOTE (2 4 7 5 8 9 3 6 10 5 9 8 12 13 14 8 9 5 2 4 7 5 8 9 3 6 10 5 9 8 12 13 14 8
9 5 0))))
(SETQ C
(MAKEARRAY 37 (QUOTE ELEMENTTYPE)
(QUOTE BYTE)
(QUOTE INITIALCONTENTS)
(QUOTE (4 7 11 8 12 13 6 10 15 9 14 13 13 14 15 9 10 6 1 2 4 3 5 6 1 3 6 2 5 4 11 12
13 7 8 4 0))))))
)
(TRIANG-INIT)
(PUTPROPS TRIANG COPYRIGHT ("Xerox Corporation" 1983))
(DECLARE: DONTCOPY
(FILEMAP (NIL (714 3180 (GOGOGO 724 . 904) (LAST-POSITION 906 . 1089) (TRY 1091 . 1886) (TEST 1888 .
2206) (TRIANG-INIT 2208 . 3178)))))
STOP
;;; Time (TEST) [This uses CMLARRAY.]